题目大意
对于字符串s,定义s∞=ss…sss。给定字符串s,t,判断 s∞ 与 t∞ 的字典序大小关系。(|s|<1e5)
思路
两个字符串长度相等自然没话说,直接比较就行。这题的核心在处理字符串长度不等的情况。
最开始想到的朴素做法是延长两个字符串至长度为二者的最小公倍数,再来比较,但是会双超。参阅了大佬的题解后了解到了一种全新的做法:直接比较s+t与t+s。
这样做的正确性是显然地。设s的长度为lens,t的长度为lent,lens<lent。在前lens个字符进行比较时,s[i]与t[i]是一一对应的,不存在对齐问题,而进行到lens+1时,如果执行s+t操作,相当于把之前已经确认相等的子串接在s后面,即两个字符串做了等价放大。
#include<iostream> using namespace std; string x, y; int main() { while(cin >> x >> y) { if(x + y < y + x) puts("<"); else if(x + y > y + x) puts(">"); else puts("="); } return 0; }
评论
还没有任何评论,你来说两句吧!