对于汉语拼音,你真的了解吗
zhuangwenbo · · 算法·理论
U513346 小怡同学的特殊称呼 自创题地址
我们班有个小姑娘,对大家挺“好”的,只是有的时候喜欢“抽风”,就比如称呼别人的时候把别人第二个字改成“小”,本人的这道题也是源于这个真实的小趣闻
说回题目,这题固定是三个字的名字,而且你也可以理解为提取出第一个字,第三个字,其实是方便大家去找规律的。你要是硬把所有的拼音组合都找出来,反而是麻烦的写法。
汉语拼音通常为声母加韵母(当然也有像
第一个字的提取,从字符串0位置开始排查,遇到韵母所属字母就标记,再遇到声母所属字母就结束,遇到
第三个字的提取,从
直接上代码,自己稍微改良了一下,解决了二三字之间
#include <bits/stdc++.h>
using namespace std;
string s,s1,s2="xiao",s3;
bool a['z'+1],vis,vi2;
int main()
{
a['a']=a['e']=a['i']=a['o']=a['u']=a['v']=1;
cin>>s;
for(int i=0;i<s.size();++i){
if(a[s[i]]) vis=1;
else if(vis){
if(!a[s[i]]){
if(s[i]=='g'){
if(a[s[i+1]]) break;
}else if(s[i]=='n'){
if(a[s[i+1]]){
cout<<s[i+1]<<" "<<a[s[i+1]]<<endl;
break;
}
}else break;
}
}
s1+=s[i];
}
for(int i=s.size()-1;i>=0;--i){
if(a[s[i]]) vi2=1;
else if(vi2){
if(!a[s[i]]){
if(s[i]=='h'){
s3=s[i]+s3;
//这样写就错了:if(!a[s[i-1]]) s3=s[i-1]+s3;
if(s[i-1]=='z' or s[i-1]=='c' or s[i-1]=='s') s3=s[i-1]+s3;
break;
}else {
s3=s[i]+s3;
break;
}
}
}
s3=s[i]+s3;
}
cout<<s1<<s2<<s3;
return 0;
}
这道题主要就是字符串的基本操作,重点在于能否找出这个“显而易见”的规律。(虽然我们的主人公小怡同学对这一点不感兴趣)