mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 16:54:50 +08:00
Merge pull request #1035 from xiaofei-2020/str4
添加(0151.翻转字符串里的单词.md):增加typescript版本
This commit is contained in:
@ -553,6 +553,65 @@ function reverse(strArr, start, end) {
|
||||
}
|
||||
```
|
||||
|
||||
TypeScript:
|
||||
|
||||
```typescript
|
||||
function reverseWords(s: string): string {
|
||||
/** Utils **/
|
||||
// 删除多余空格, 如' hello world ' => 'hello world'
|
||||
function delExtraSpace(arr: string[]): void {
|
||||
let left: number = 0,
|
||||
right: number = 0,
|
||||
length: number = arr.length;
|
||||
while (right < length && arr[right] === ' ') {
|
||||
right++;
|
||||
}
|
||||
while (right < length) {
|
||||
if (arr[right] === ' ' && arr[right - 1] === ' ') {
|
||||
right++;
|
||||
continue;
|
||||
}
|
||||
arr[left++] = arr[right++];
|
||||
}
|
||||
if (arr[left - 1] === ' ') {
|
||||
arr.length = left - 1;
|
||||
} else {
|
||||
arr.length = left;
|
||||
}
|
||||
}
|
||||
// 翻转字符串,如:'hello' => 'olleh'
|
||||
function reverseWords(strArr: string[], start: number, end: number) {
|
||||
let temp: string;
|
||||
while (start < end) {
|
||||
temp = strArr[start];
|
||||
strArr[start] = strArr[end];
|
||||
strArr[end] = temp;
|
||||
start++;
|
||||
end--;
|
||||
}
|
||||
}
|
||||
|
||||
/** Main code **/
|
||||
let strArr: string[] = s.split('');
|
||||
delExtraSpace(strArr);
|
||||
let length: number = strArr.length;
|
||||
// 翻转整个字符串
|
||||
reverseWords(strArr, 0, length - 1);
|
||||
let start: number = 0,
|
||||
end: number = 0;
|
||||
while (start < length) {
|
||||
end = start;
|
||||
while (strArr[end] !== ' ' && end < length) {
|
||||
end++;
|
||||
}
|
||||
// 翻转单个单词
|
||||
reverseWords(strArr, start, end - 1);
|
||||
start = end + 1;
|
||||
}
|
||||
return strArr.join('');
|
||||
};
|
||||
```
|
||||
|
||||
Swift:
|
||||
|
||||
```swift
|
||||
|
Reference in New Issue
Block a user