闲话不说先看第一题-反转字符串
题目很简单,只要设定双指针交换就行,直接上代码
class Solution {
public void reverseString(char[] s) {
int n =s.length;
int left = 0;
int right = n-1;
while(left < right){
char middle = s[right];
s[right] = s[left];
s[left] = middle;
left++;
right--;
}
}
}
第二题反转字符串中的单词
思路:和第一题很像,只是这题多了分割的操作
class Solution {
public String reverseWords(String s) {
StringBuffer ret = new StringBuffer();
int length = s.length();
int i = 0;
while (i < length) {
int start = i;//i一直走到空格处停下
while (i < length && s.charAt(i) != ' ') {
i++;
}//将ret中的值根据规则赋值
for (int p = start; p < i; p++) {
ret.append(s.charAt(start + i - 1 - p));
}//处理空格
while (i < length && s.charAt(i) == ' ') {
i++;
ret.append(' ');
}
}
return ret.toString();
}
}
乍一看很麻烦,后来看来解题思路,我靠???原来我思考了半天,JAVA已经封装好了很多功能,来和我一起看看吧
public String reverseWords(String s) {
String[] str = s.split(" ");
StringBuffer ans = new StringBuffer();
for(int i=0; i<str.length; i++){
ans.append(" " + new StringBuffer(str[i]).reverse());
}
ans.delete(0,1);
return ans.toString();
}
作者:qing-ye-no
链接:https://leetcode-cn.com/problems/reverse-words-in-a-string-iii/solution/javali-yong-splithe-stringbufferli-de-re-0qp6/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
最后贴上需要用到的知识。省的到处查了
charAt()显示特定字符
split()分割字符串
reverse翻转