NC18984. 可爱即正义
描述
输入描述
一行一个字符串s
输出描述
如果他能通过只交换其中的两个位置上的字符使"suqingnianloveskirito"不是交换后的字符串的子串,则在第一行输出一个Yes,之后一行输出两个数d1,d2,表示你的方案是把原字符串在位置d1和位置d2上的字符互换,字符串的第一个字符的位置是1。
如果他不管交换那两个字符都不能满足条件,直接输出一行No。
示例1
输入:
suqingnianloveskiritosuqingnianloveskiritosuqingnianloveskiritothemostimportantthingneedsaidatleastthreetimes
输出:
No
示例2
输入:
suqingnianloveskiritosomuch
输出:
Yes 1 2
C++11(clang++ 3.9) 解法, 执行用时: 7ms, 内存消耗: 612K, 提交时间: 2018-09-13 21:48:35
#include<bits/stdc++.h> using namespace std; string s,a="suqingnianloveskirito"; int main() { cin>>s;int len=a.length(); int t1=s.find(a,0); int t2=s.find(a,len+t1); int t3=s.find(a,len+t2); if(t1==-1) cout<<"Yes"<<endl<<1<<' '<<2; else { if(t2==-1) cout<<"Yes"<<endl<<t1+1<<' '<<t1+2; else { if(t3==-1) cout<<"Yes"<<endl<<t1+1<<' '<<t2+2; else cout<<"No"; } } }
Python3 解法, 执行用时: 36ms, 内存消耗: 5172K, 提交时间: 2022-04-21 21:39:37
s = input() x = s.find("suqingnianloveskirito") s = s[:x] + "stqingnianloveskiriuo" + s[x + 21 : ] y = s.find("suqingnianloveskirito") if y == -1: print('Yes') print(f"{x + 2} {x + 20}") else: z = (s[:y] + '0' + s[y + 21: ]).find("suqingnianloveskirito") if z == -1: print('Yes') print(f"{x + 2} {y + 20}") else: print('No')
C++(g++ 7.5.0) 解法, 执行用时: 7ms, 内存消耗: 556K, 提交时间: 2022-09-27 19:07:59
#include<bits/stdc++.h> using namespace std; string s,a="suqingnianloveskirito"; int x,y,z; int main() { cin>>s;int l=a.length(); x=s.find(a,0); y=s.find(a,l+x); z=s.find(a,l+y); if(x==-1) cout<<"Yes"<<endl<<1<<' '<<2; else if(y==-1) cout<<"Yes"<<endl<<x+1<<' '<<x+2; else if(z==-1) cout<<"Yes"<<endl<<x+1<<' '<<y+2; else cout<<"No"; }