今天从醒来打开电脑就开始帮别人处理数据了,你敢信?每个人的数据都得有一个专属的配套处理方式,哎呀,尽管是东拼西凑出来的代码,那也得会拼凑啊,这就好比是一个人,每个人都有自己适合的穿衣风格,专属发型,呵呵呵,闲话不说,直接进入正题。 今日第一题就碰壁了,理解起来不复杂,需要对一些方法有所了解。题目如下:力扣151题 解题思路:
第一步===》去除所有空格(包括字符串前、后以及中间)
第二步===》反转整个字符串(前后对应对调)
第三步===》反转每个单词(从左往右遍历,以空格为单词区分,进行翻转)
class Solution { public String reverseWords(String s) { StringBuilder sb = removeSpace(s); reverse(sb, 0, sb.length()-1); reverseEachWord(sb); return sb.toString(); //反转每个单词 public void reverseEachWord(StringBuilder sb) { int begin = 0, end = 0; while(begin < sb.length()) { while(end < sb.length() && sb.charAt(end) != ' ') { end++; } reverse(sb, begin, end - 1); begin = end + 1; end++; } } //反转字符串 public void reverse(StringBuilder sb, int left, int right) { while(left < right) { char temp = sb.charAt(left); sb.setCharAt(left, sb.charAt(right)); sb.setCharAt(right, temp); left++; right--; } } //清空空格 public StringBuilder removeSpace(String s) { int left = 0, right = s.length()-1; //清除字符串左边的所有空格 while(left <= right && s.charAt(left) == ' ') { left++; } //清除字符串右边的所有空格 while(left <= right && s.charAt(right) == ' ') { right++; } //清除中间部分的空格 StringBuilder sb = new StringBuilder(); while(left <= right) { char c = s.charAt(left); if(c != ' ' || sb.charAt(sb.length() - 1) != ' ') { sb.append(c); } left++; } return sb; } } }
public void setCharAt(int pos, char c);
参数:
int pos – represents the position where we want to set the given character. int pos –表示我们要设置给定字符的位置。 char c – represents the new character which we want to place. char c –表示我们要放置的新字符。
不得不说,只要有一个单词打错,你真的是找不到啊!我这个题就因为reverse(sb, 0, sb.length()-1);中的sb写成s,他错误还在reverse函数本身,哈哈哈,真是鸡肋呀!
再来一题:力扣165题 解题思路:首先,以 点 为分隔符,取出来转成数字,比较大小,最后返回相应的数字即可。
代码如下:class Solution { public int compareVersion(String version1, String version2) { int i = 0, j = 0; //version1,version2 只要有一个没遍历完就接着遍历 while(i < version1.length() || j < version2.length()) { int x = 0, y = 0; //对于version1来说,以'.'为分隔,依次取出字符串 while(i < version1.length() && version1.charAt(i) != '.') { //字符串 转 数字 比大小 x = x*10 + version1.charAt(i) - '0'; i++; } while(j < version2.length() && version2.charAt(j) != '.') { y = y*10 + version2.charAt(j) - '0'; j++; } //比完之后返回相应的数 if(x > y) { return 1; } else if(x < y) { return -1; } i++; j++; } return 0; } }
参考文献:
Java StringBuilder setCharAt()方法与示例
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)