字符串左移(右移)

A.CQW又迟到了
CQW是个坏学生,每天都迟到,从没看见他在第一节课出现过,懒惰的他,总是在点名的最后一刻出现。为了治一治他这个坏习惯,教C语言的XZW老师决定每天都给他布置一个单独的作业,并答应只要他每次都能正确完成作业就不点他的名字,CQW为了可以多睡觉,立刻答应了下来。为了让CQW知难而退,于是第一天XZW老师就布置了一个超级难的题!
将一个字符串循环打印输出成一个 n * n 的矩阵。
如输入:abcd
那么输出:
abcd
bcda
cdab
dabc
也就是说每次都将输出的上一个字符串的第一个字符移动到最后的位置形成新的字符串。
天哪!对于从来不上课的CQW同学来说这题实在是太难了。他听说你喜欢唱跳、rap和篮球,还练习了两年半的C语言,于是过来请求你的帮助,你可以帮帮他吗?

#include"iostream"
#include"string"
using namespace std;
int main()
{
 string str;
 int n;
 while(cin>>str)
 {
  int len=str.size();
  for(int i=0;i<len;i++)
  {
   int count=i,j=0;
   while(j<len)
   {
    cout<<str.at(count%len);
    count++;
    ++j;
   }
   cout<<endl;
  }
 }
 return 0;
}

这道题运用了简单的字符串移动算法,接下给大家介绍字符串左移和右移算法。
字符串左移算法

#include"iostream"
#include"string"
using namespace std;
int main()
{
 string str;
 int n;
 while(cin>>str)
 {
  cin>>n;
  int len=str.size();
  n=n%len;
  int count=n,j=0;
  while(j<len)
  {
   cout<<str.at(count%len);   
   count++;   
   ++j;   
  }   
  cout<<endl;     
 }
 return 0;
}

字符串右移算法

#include"iostream"
#include"string"
using namespace std;
int main()
{
 string str;
 int n;
 while(cin>>str)
 {
  cin>>n;
  int len=str.size();
  n=n%len;
  int count=len-n,j=0;
  while(j<len)
  {
   cout<<str.at(count%len);   
   count++;   
   ++j;   
  }   
  cout<<endl;     
 }
 return 0;
}

掌握这两种算法此题就变得十分简单了。

发布了23 篇原创文章 · 获赞 8 · 访问量 435

猜你喜欢

转载自blog.csdn.net/qq_45697900/article/details/105524271