剑指offer — 翻转单词
程序员文章站
2022-06-09 09:15:05
...
牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?
解题思路:使用两部翻转法,可以轻松解决
java
public class Solution {
public String ReverseSentence(String str) {
if (str == null || str.length() == 0) {
return "";
}
char[] c = str.toCharArray();
reverse(c, 0, c.length - 1);
int start = 0, end = 0;
while (end < c.length && c[end] == ' ') {
end++;
}
start = end;
while (end < c.length) {
if (c[end] != ' ') {
end++;
} else {
reverse(c, start, end - 1);
end++;
start = end;
}
}
reverse(c, start, end - 1);
return new String(c);
}
private void reverse(char[] c, int start, int end) {
char temp;
while (start < end) {
temp = c[start];
c[start] = c[end];
c[end] = temp;
start++;
end--;
}
}
}
上一篇: php算式验证码和汉字验证码的实现方法
推荐阅读
-
《剑指offer》面试题6 重建二叉树
-
剑指offer25:复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),结果返回复制后复杂链表的head。
-
剑指offer31:整数中1出现的次数(从1到n整数中1出现的次数)
-
剑指offer28:找出数组中超过一半的数字。
-
剑指offer27:按字典序打印出该字符串中字符的所有排列
-
C#版剑指Offer-001二维数组中的查找
-
剑指offer11:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。(进制转换,补码反码)
-
剑指offer13:数组[奇数,偶数],奇数偶数相对位置不变。
-
剑指offer第二天
-
剑指offer JZ31 整数中1出现的次数 Python 解