旋转弦,资本持有点/小持有点

时间:2017-04-16 13:48:30

标签: c string

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

大写字母将保留其点,并且仅在彼此之间的那些点旋转,小写字母也是如此

第一个字母为H,下一个大写字母为L,在轮换中,字母H将带有L的地点和{ {1}}会占用L的位置等等,对于小写字母也是如此

我这样做了,将字符串分成两个字符串,大写和小字符串,用W填充空白点 所以0smallString = 0e0lo0orl0会出现应该旋转它们的函数。我想在只有字母的点之间进行旋转,因此capitalString = H0L00W000D变为smallStringsmallString = 0l0el0oor0,但我的功能只会旋转所有字符

capitalString = 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条件,但只会让事情变得更糟

1 个答案:

答案 0 :(得分:1)

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

See an example in action

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