151.反转字符串中的单词
小于 1 分钟
151.反转字符串中的单词
/*
* @lc app=leetcode.cn id=151 lang=typescript
*
* [151] 反转字符串中的单词
*/
// @lc code=start
function reverseWords(s: string): string {
let n = s.length - 1; // 17
let l = findNotNullIndex(s.slice(0, s.length - 1), true); // 找到左侧不为空
let res = [];
while (n >= l) {
// 从后往前找
let r = findNotNullIndex(s.slice(0, n + 1), false);
let l1 = r;
while (r > l) {
if (s[r] == " ") {
res.push(s.slice(r + 1, l1 + 1));
break;
}
r--;
}
if (r == l) {
res.push(s.slice(r, l1 + 1));
}
n = r - 1;
}
return res.join(" ");
}
function findNotNullIndex(s: string, tag: boolean): number {
// s表示字符串,tag表示从前往后还是从后往前s
let index = 0;
if (tag) {
// 从前往后
let l = 0;
while (l < s.length) {
if (s[l] != " ") {
index = l;
break;
}
l++;
}
} else {
let r = s.length - 1;
while (r >= 0) {
// 从后往前
if (s[r] != " ") {
index = r;
break;
}
r--;
}
}
return index;
}
console.log(reverseWords(" hello world "));
// @lc code=end
Loading...
