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
- 分割字串問題字串
- shell中字串分割字串
- c++ 分割字串C++字串
- python如何分割字串Python字串
- 字串分割 提取數字字串
- 字串分割注意事項字串
- Webgoat學習筆記WebGo筆記
- Python的字串分割方法Python字串
- java split進行字串分割Java字串
- leetcode 1525 字串的好分割數目(雜湊表,字串分割)LeetCode字串
- [AWK]使用AWK進行分割字串以及擷取字串字串
- JavaScript split() 分割字串生成陣列JavaScript字串陣列
- js如何使用指定字元分割字串JS字元字串
- 【轉載】Python字串操作之字串分割與組合Python字串
- Swift3.0語言教程分割字串與擷取字串Swift字串
- 記一次字串分割的工作字串
- 動態規劃——字串分割(Word Break)動態規劃字串
- C++常用字串分割方法C++字串
- 建立一個字串分割的函式字串函式
- webgoat白盒審計+漏洞測試WebGo
- 例題讀入字串,包括換行,然後用#f分割字串字串
- C++分割字串,及strtok函式使用C++字串函式
- mysql 如何查詢逗號“,”分割的字串MySql字串
- Perl split字串分割函式用法指南字串函式
- 你可能不知道的字串分割技巧字串
- js使用指定字元將字串分割生成陣列JS字元字串陣列
- split 分割 字串(分隔符如:* ^ : | , .) 及注意點字串
- Python中,如何使用反斜槓 ““分割字串?Python字串
- 拉丁字母的歷史(History of the Latin alphabet)Alphabet
- js split()分割字串生成陣列程式碼例項JS字串陣列
- oracle儲存過程將引數字串分割sqlOracle儲存過程字串SQL
- 通過WebGoat學習java反序列化漏洞WebGoJava
- Golang 字串分割,替換和擷取 strings.SplitGolang字串