c - 旋转串,大资金持有现货/小额持有现货

标签 c string

输入是一个字符串:HeLloWorlD 例如, 输出应为:DlHelLoorW

大写字母将保持其位置,并且仅在彼此之间的这些位置上旋转,小写字母也是如此

第一个字母是H,下一个大写字母是L,在旋转中字母H将取代L 的位置和 L 将占据 W 的位置,依此类推,小写字母也是如此

我的做法是,将字符串分成两个字符串,大写字符串和小字符串,并用 0 填充空位 所以 smallString = 0e0lo0orl0capitalString = H0L00W000D 然后是应该旋转它们的函数。我想在只有字母的点之间旋转,因此 smallString 变为 smallString = 0l0el0oor0capitalString = D0H00L000W,但我的函数只会旋转所有角色

static void rotateString ( char * a, int n)

   {
     int i, j;
     char buffer[BUFSIZ] = { '\0' };
     for ( i = n, j = 0; a[i] != '\0'; i++ ) 
        buffer[j++] = a[i], a[i] = '\0' ;
     strcat ( buffer , a ), strcpy ( a , buffer);
   } 

我知道它的编写方式无论如何都不会考虑 0 ,但我尝试添加 if 条件,但只会让事情变得更糟

最佳答案

一种方法是在遍历字符串时跟踪遇到的最后一个大写/小写字符以及遇到的第一个大写/小写字符的索引,测试每个字符。

See an example in action

请注意,我使用了一些您可能还没有学过的东西。希望这不会让您感到困惑。

关于c - 旋转串,大资金持有现货/小额持有现货,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43437926/

相关文章:

c - 旧的 bison/flex 代码无法编译

php - 在php中将一个大字符串写入文件

将 char 指针数组转换为 void 指针,然后再转换回来

c - 关于void和指针的问题

c++ - 从文件中读取字符串到数组

java - 我可以使用同一个扫描仪来扫描 double 型和字符串型吗?这个 "||"是一个 or 语句吗?

ruby - 尝试使用 Ruby 中的字符串值引用哈希

java - 我无法解密发送消息 AES

c - 为什么此代码有 "EOF in inline file"错误,我该如何解决?

c libcurl 管道 HTTP GET 和 PUT