LeetCode-824. Goat Latin(字串分割)
824 。山羊拉丁文
S
給出一個句子,由用空格分隔的單片語成。每個單詞只包含小寫字母和大寫字母。
我們想將句子轉換成“ 山羊拉丁語” (一種類似於拉丁語的化妝語言)。
山羊拉丁文規則如下:
- 如果一個單詞以母音開頭(a,e,i,o或u),則追加
"ma"
到單詞的末尾。
例如,'apple'這個詞變成'applema'。
- 如果一個詞以子音開頭(即不是母音),刪除第一個字母並將其附加到最後,然後新增
"ma"
。
例如,這個詞"goat"
變成了"oatgma"
。
'a'
在每個單詞的末尾新增一個字母,每個單詞的索引在句子中,從1開始。
例如,第一個單詞被"a"
新增到結尾,第二個單詞被"aa"
新增到結尾,依此類推。
返回代表從S
Goat Latin 轉換成的最後一句。
Example 1:
Input: "I speak Goat Latin" Output: "Imaa peaksmaaa oatGmaaaa atinLmaaaaa"
Example 2:
Input: "The quick brown fox jumped over the lazy dog" Output: "heTmaa uickqmaaa rownbmaaaa oxfmaaaaa umpedjmaaaaaa overmaaaaaaa hetmaaaaaaaa azylmaaaaaaaaa ogdmaaaaaaaaaa"
Notes:
S
contains only uppercase, lowercase and spaces. Exactly one space between each word.1 <= S.length <= 150
.
主要是分割字串的兩種方法:
方法一:
C++引入了ostringstream、istringstream、stringstream這三個類,要使用他們建立物件就必須包含<sstream>這個標頭檔案。
istringstream類用於執行C++風格的串流的輸入操作。
ostringstream類用於執行C風格的串流的輸出操作。
strstream類同時可以支援C風格的串流的輸入輸出操作。
istringstream的建構函式原形如下:
istringstream::istringstream(string str);
它的作用是從string物件str中讀取字元。
#include<iostream>
#include<sstream>
using namespace std;
int main()
{
string str, line;
while(getline(cin, line))
{
istringstream stream(line);
while(stream>>str)
cout<<str.c_str()<<endl;
}
return 0;
}
測試:
Input:
Abdc Xcs Xa Xa
Output:
Abdc
Xcs
Xa
AC程式碼:#include<bits/stdc++.h>
using namespace std;
/********************提交程式碼********************/
class Solution
{
public:
string toGoatLatin(string S)
{
vector<string> ve;
string str,s,a="a",ans="";
ve.clear();
istringstream stream(S);
bool flag=false;
while(stream>>str)
{
s=str.c_str();
if(s[0]=='a'||s[0]=='e'||s[0]=='i'||s[0]=='o'||s[0]=='u'||s[0]=='A'||s[0]=='E'||s[0]=='I'||s[0]=='O'||s[0]=='U')
s+="ma";
else
{
s+=s[0];
s.erase(0,1);
s+="ma";
}
s+=a;
a+="a";
if(!flag)//first one
flag=true;
else
ans+=" ";
ans+=s;
}
return ans;
}
};
/***************************************************/
int main()
{
#ifdef ONLINE_JUDGE
#else
freopen("F:/cb/read.txt","r",stdin);
//freopen("F:/cb/out.txt","w",stdout);
#endif
ios::sync_with_stdio(false);
cin.tie(0);
string line;
while(getline(cin,line))
{
Solution s;
cout<<"/"<<s.toGoatLatin(line)<<"/"<<endl;;
}
return 0;
}
方法二:
char *strtok(char s[], const char *delim);
引數分別是,“待分割的字串”,“分隔符”
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
char sentence[]="This is a sentence with 7 tokens";
char *tokenPtr=strtok(sentence," ");
while(tokenPtr!=NULL)
{
cout<<tokenPtr<<endl;
tokenPtr=strtok(NULL," ");
}
return 0;
}
#include<bits/stdc++.h>
using namespace std;
/********************提交程式碼********************/
class Solution
{
public:
string toGoatLatin(string S)
{
string s,a="a",ans="";
int len=S.length();
char str[len];
strcpy(str,S.c_str());
char*temp = strtok(str," ");
bool flag=false;
while(temp)
{
s=temp;
if(s[0]=='a'||s[0]=='e'||s[0]=='i'||s[0]=='o'||s[0]=='u'||s[0]=='A'||s[0]=='E'||s[0]=='I'||s[0]=='O'||s[0]=='U')
s+="ma";
else
{
s+=s[0];
s.erase(0,1);
s+="ma";
}
s+=a;
a+="a";
if(!flag)//first one
flag=true;
else
ans+=" ";
ans+=s;
temp=strtok(NULL," ");
}
return ans;
}
};
/***************************************************/
int main()
{
#ifdef ONLINE_JUDGE
#else
freopen("F:/cb/read.txt","r",stdin);
//freopen("F:/cb/out.txt","w",stdout);
#endif
ios::sync_with_stdio(false);
cin.tie(0);
string line;
while(getline(cin,line))
{
Solution s;
cout<<"/"<<s.toGoatLatin(line)<<"/"<<endl;;
}
return 0;
}
相關文章
- 字串-字串分割字串
- PHP分割字串PHP字串
- 熱愛出goatGo
- c++ 分割字串C++字串
- 分割字串問題字串
- python如何分割字串Python字串
- leetcode 1525 字串的好分割數目(雜湊表,字串分割)LeetCode字串
- Python的字串分割方法Python字串
- 字串分割 提取數字字串
- 【轉載】Python字串操作之字串分割與組合Python字串
- JavaScript split() 分割字串生成陣列JavaScript字串陣列
- 記一次字串分割的工作字串
- 動態規劃——字串分割(Word Break)動態規劃字串
- 例題讀入字串,包括換行,然後用#f分割字串字串
- C++分割字串,及strtok函式使用C++字串函式
- Python中,如何使用反斜槓 ““分割字串?Python字串
- Perl split字串分割函式用法指南字串函式
- mysql 如何查詢逗號“,”分割的字串MySql字串
- 你可能不知道的字串分割技巧字串
- 20190118-利用Python實現Pig Latin遊戲Python遊戲
- Leetcode:1616. 分割兩個字串得到迴文串LeetCode字串
- Golang 字串分割,替換和擷取 strings.SplitGolang字串
- Java String類,字串常量池,建立方法,字串的獲取,擷取,轉換,分割。Java字串
- Python科研武器庫 - 字串操作 - 路徑字串分割 os.path.split()、os.path.splitext()Python字串
- leetcod 131.分割回文串(回溯、迴文字串)字串
- C#的String.Split 分割字串用法詳解的程式碼C#字串
- 【華為OD】機試真題 - 分割均衡字串-2024年D卷字串
- 按位長度進行字串的分割輸出,長度不足補0字串
- 帝國CMS網站 Illegal mix of collations (gbk_chinese_ci,IMPLICIT) and (latin1_swedish_ci,COERCIBLE)網站
- 技術分享 | 為什麼我的 MySQL 客戶端字符集為 latin1MySql客戶端
- Python專案實踐:串列埠字串資料的讀取、分割與儲存到csv檔案Python串列埠字串
- 全景分割丨全景分割方法小結
- Linux分割槽方案、分割槽建議Linux
- C語言,如何進行多次分割,獲取的到多個字串,組成一個陣列C語言字串陣列
- 木棍分割
- oracle分割槽表和分割槽表exchangeOracle
- PostgreSQL/LightDB 分割槽表之分割槽裁剪SQL
- Linux 分割槽擴容(根分割槽擴容,SWAP 分割槽擴容,掛載新分割槽為目錄)Linux