免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Python學習教程:給定一個字符串,逐個翻轉字符串中的每個單詞

翻轉字符串里的單詞

Given an input string, reverse the string word by word.

示例 1:

輸入: "the sky is blue"
輸出: "blue is sky the"

示例 2:

輸入: " hello world! "
輸出: "world! hello"
解釋: 輸入字符串可以在前面或者后面包含多余的空格,但是反轉后的字符不能包括。

示例 3:

輸入: "a good example"
輸出: "example good a"
解釋: 如果兩個單詞間有多余的空格,將反轉后單詞間的空格減少到只含一個。

說明:

  • 無空格字符構成一個單詞。

  • 輸入字符串可以在前面或者后面包含多余的空格,但是反轉后的字符不能包括。

  • 如果兩個單詞間有多余的空格,將反轉后單詞間的空格減少到只含一個。

進階:

請選用 C 語言的用戶嘗試使用 O(1) 額外空間復雜度的原地解法。

Note:

  • A word is defined as a sequence of non-space characters.

  • Input string may contain leading or trailing spaces. However, your reversed string should not contain leading or trailing spaces.

  • You need to reduce multiple spaces between two words to a single space in the reversed string.

Follow up:

For C programmers, try to solve it in-place in O(1) extra space.

解題思路:

Java 字符串不支持運算符重載,無法用原地解法。 我們將字符串轉為字符型數組并用兩個指針來解這道題。指針 i 作為原字符串轉為字符數組的索引,從右向左移。指針 j 作為新字符數組索引,從左向右賦值得到原數組 count 長度的字符。count記錄遇到的字母數量,每次遇到 空格 字符,新數組得到從該空格字符 向右 count 個字符并刷新count 計數。

Java:

class Solution {
public String reverseWords(String s) {
if (s.length()==0)return s;//如果為空直接返回
char strs[]=s.toCharArray(),ans[]=new char[s.length()];//字符串轉為char字符數組
int count=0,j=0;//全局變量j記錄新數組索引
for(int i=s.length()-1;i>=0;i--){指針i從右向左遍歷strs字符
if(strs[i]==' '){//判斷是否為空格字符
int k=i+1;
if(count>0){
while (--count>=0){//從字符i向右count個字符賦給新數組ans
ans[j++]=strs[k++];
}
ans[j++]=' ';
count=0;//count初始化為0
}
}else if(i==0){
for(;i<=count;i++)ans[j++]=strs[i];//左移到第一個字符時證明不是以空格開頭,則從0獲取count+1個個字符賦給ans
j+=1;
break;
}
else {
count++;//如果是字母,則count累加1
}
}
if(j<1)return "";//如果j依然是0,則原字符串全為空格,返回空字符串
String string=String.valueOf(ans,0,j-1);//char數組轉為字符串返回
return string;
}
}

為了考慮性能,轉成了多個判斷,所以有些繁瑣。最終運行:Your runtime beats 99.91 % of java submissions

Python3:

python完全可以實現(xiàn)Java的思路,不再復現(xiàn)。這里利用函數投機取巧:

split() ,它可以把傳入字符串剔除空格后返回 所有單詞的數組

join() ,它可以指定一個數組以特定字符為間隔,拼接成一個字符串

加上 [::-1] 反轉數組,一行代碼既可實現(xiàn)該題目要求

’ abc def ’原字符串

[‘abc’ , ‘def’]剔除空格返回String型單詞數組

[‘def’ , ‘abc’]切片反轉數組

‘def abc’拼接成字符串

class Solution:
def reverseWords(self, s: str) -> str:
return " ".join(s.split()[::-1]) # 剔除所有空格字符返回數組并反轉,以空格為間隔把數組拼成字符串
本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
計算字符串最后一個單詞的長度,單詞以空格隔開。
求一串包含單詞空格的字符串中的最后一個單詞的字母個數
python字符串詳細篇
Python字符串類型的內建函數
C#的字符串常用的操作方法
JAVA超級基礎之String型字符串
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服