
今天从醒来打开电脑就开始帮别人处理数据了,你敢信?每个人的数据都得有一个专属的配套处理方式,哎呀,尽管是东拼西凑出来的代码,那也得会拼凑啊,这就好比是一个人,每个人都有自己适合的穿衣风格,专属发型,呵呵呵,闲话不说,直接进入正题。 今日第一题就碰壁了,理解起来不复杂,需要对一些方法有所了解。题目如下:力扣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条)