翻转单词题解
程序员文章站
2022-03-15 11:22:05
牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“st...
牛客最近来了一个新员工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--; } } }
上一篇: 贝叶斯分类器介绍