字符串相关问题
来源:互联网 发布:网络教育资源 编辑:程序博客网 时间:2024/05/29 16:16
1. 反转字符串
For example,
Given s = “the sky is blue”,
return “blue is sky the”.
注意空格的处理
public class Solution { public String reverseWords(String s) { if(s == null || s.length() == 0) return s; String[] stringArray = s.split(" "); int len = stringArray.length; StringBuilder sb = new StringBuilder(); for(int i = len-1; i >= 0; i--) { if(!stringArray[i].isEmpty()) sb.append(stringArray[i]).append(" "); } return sb.length() == 0 ? "" : sb.substring(0, sb.length()-1); }}
2.字符串的正则表达式
请实现一个函数用来匹配包括’.’和’‘的正则表达式。模式中的字符’.’表示任意一个字符,而’‘表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串”aaa”与模式”a.a”和”ab*ac*a”匹配,但是与”aa.a”和”ab*a”均不匹配
代码:
public class Solution { public boolean match(char[] str, char[] pattern) { if(str == null || pattern == null) return false; return matchHelper(str, 0, pattern, 0); } public boolean matchHelper(char[] str, int strIndex, char[] pattern, int patternIndex) { //同时结束 则返回true if(strIndex == str.length && patternIndex == pattern.length) return true; //str为未结束 pattern结束 if(strIndex != str.length && patternIndex == pattern.length) return false; //str结束 pattern未结束 if(strIndex == str.length && patternIndex != pattern.length) { //a*b*的问题 if(patternIndex < pattern.length-1 && pattern[patternIndex+1] == '*') { return matchHelper(str, strIndex, pattern, patternIndex+2); } return false; } //str未结束 pattern未结束 pattern后一位为* if(patternIndex < pattern.length-1 && pattern[patternIndex+1] == '*') { //相等 if(str[strIndex] == pattern[patternIndex] || (pattern[patternIndex] == '.' && strIndex != str.length)) { return matchHelper(str, strIndex+1, pattern, patternIndex+2) || matchHelper(str, strIndex+1, pattern, patternIndex) || matchHelper(str, strIndex, pattern, patternIndex+2); }else { return matchHelper(str, strIndex, pattern, patternIndex+2); } } //如果相等 或者pattern为. if(str[strIndex] == pattern[patternIndex] || (pattern[patternIndex] == '.' && strIndex != str.length)) { return matchHelper(str, strIndex+1, pattern, patternIndex+1); } return false; }}
3. 是否为数字
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串”+100”,”5e2”,”-123”,”3.1416”和”-1E-16”都表示数值。 但是”12e”,”1a3.14”,”1.2.3”,”+-5”和”12e+4.3”都不是。
代码:
public class Solution { public boolean isNumeric(char[] str) { if(str == null || str.length == 0) return false; int len = str.length; int index = 0; int[] temp = new int[1]; //正负号 if(str[index] == '+' || str[index] == '-') { index++; } //只有一个+ - 号 为false if(index == len) return false; boolean isNum = true; //先扫描数字 index = scanDigits(str, index, len); if(index != len) { //等于 . if(str[index] == '.') { index++; index = scanDigits(str, index, len); if(index != len && (str[index] == 'E' || str[index] == 'e')) { index++; isNum = isExp(str, index, len, temp); index = temp[0]; } }else if(str[index] == 'e' || str[index] == 'E') { index++; isNum = isExp(str, index, len, temp); index = temp[0]; }else isNum = false; } return isNum && index == len; } //扫描数字 public int scanDigits(char[] str, int index, int len) { while(index != len && str[index] >= '0' && str[index] <= '9') index++; return index; } //判断指数 public boolean isExp(char[] str, int index, int len, int[] temp) { if(index != len && (str[index]=='+' || str[index]== '-')) index++; //排除 +- e if(index == len) return false; index = scanDigits(str, index, len); temp[0] = index; return index == len ? true : false; }}
0 0
- 字符串相关问题
- 字符串相关问题
- 字符串组合相关问题
- 字符串相关问题
- 字符串的相关问题
- 【算法】字符串问题相关
- 字符串相关问题
- 字符串的相关问题
- 关于字符串的相关问题
- 程序员面试:字符串相关问题
- l两个字符串相关问题
- 两个字符串的相关问题
- 关于字符串类型相关的问题总结
- 字符串类string使用的相关问题
- 和字符串相关的一些问题
- 字符串相关操作、问题及算法提纲
- string类、字符串数组相关问题
- (C语言)字符串反转相关问题
- MEAN Stack入门-1: Node.js-to-AngularJS组件介绍
- 红黑树好文章(二)
- Ajax and php 3_1
- eax, ebx, ecx, edx, esi, edi, ebp, esp
- 红黑树好文章(三)
- 字符串相关问题
- C++第二次上机报告
- Ext4.2入门教程(表格开发例子)
- EventBus源码解读详细注释(4)register时刷新的两个map
- EasyUI-可编辑的表格
- oracle驱动表以及如何确定驱动表
- 【Linux多进程同步】记录锁
- 第三周项目2:本月有几天?
- 网易2016研发工程师编程题①