mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-10 04:06:51 +08:00
@ -817,6 +817,53 @@ object Solution {
|
|||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
PHP:
|
||||||
|
```php
|
||||||
|
function reverseWords($s) {
|
||||||
|
$this->removeExtraSpaces($s);
|
||||||
|
$this->reverseString($s, 0, strlen($s)-1);
|
||||||
|
// 将每个单词反转
|
||||||
|
$start = 0;
|
||||||
|
for ($i = 0; $i <= strlen($s); $i++) {
|
||||||
|
// 到达空格或者串尾,说明一个单词结束。进行翻转。
|
||||||
|
if ($i == strlen($s) || $s[$i] == ' ') {
|
||||||
|
// 翻转,注意是左闭右闭 []的翻转。
|
||||||
|
$this->reverseString($s, $start, $i-1);
|
||||||
|
// +1: 单词与单词直接有个空格
|
||||||
|
$start = $i + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $s;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 移除多余空格
|
||||||
|
function removeExtraSpaces(&$s){
|
||||||
|
$slow = 0;
|
||||||
|
for ($i = 0; $i < strlen($s); $i++) {
|
||||||
|
if ($s[$i] != ' ') {
|
||||||
|
if ($slow != 0){
|
||||||
|
$s[$slow++] = ' ';
|
||||||
|
}
|
||||||
|
while ($i < strlen($s) && $s[$i] != ' ') {
|
||||||
|
$s[$slow++] = $s[$i++];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 移动覆盖处理,丢弃多余的脏数据。
|
||||||
|
$s = substr($s,0,$slow);
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 翻转字符串
|
||||||
|
function reverseString(&$s, $start, $end) {
|
||||||
|
for ($i = $start, $j = $end; $i < $j; $i++, $j--) {
|
||||||
|
$tmp = $s[$i];
|
||||||
|
$s[$i] = $s[$j];
|
||||||
|
$s[$j] = $tmp;
|
||||||
|
}
|
||||||
|
return ;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
-----------------------
|
-----------------------
|
||||||
|
Reference in New Issue
Block a user