小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

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

 千鋒Python學堂 2019-07-15

翻轉字符串里的單詞

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

Java:

class Solution {
public String reverseWords(String s) {
if (s.length()==0)return s;//如果為空直接返回
char strs[]=s.toCharArray(),ans[]=new char[s.length()];//字符串轉為char字符數(shù)組
int count=0,j=0;//全局變量j記錄新數(shù)組索引
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個字符賦給新數(shù)組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數(shù)組轉為字符串返回
return string;
}
}

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

Python3:

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

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

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

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

’ abc def ’原字符串

[‘a(chǎn)bc’ , ‘def’]剔除空格返回String型單詞數(shù)組

[‘def’ , ‘a(chǎn)bc’]切片反轉數(shù)組

‘def abc’拼接成字符串

class Solution:
def reverseWords(self, s: str) -> str:
return " ".join(s.split()[::-1]) # 剔除所有空格字符返回數(shù)組并反轉,以空格為間隔把數(shù)組拼成字符串

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多