二,字符串

1题目描述

现在,我们将会给你一个字符串,字符串只包含'A'-'Z',你的任务是用下面的方法对它编码:

1.一个长度为K且连续的子串,如果子串中所有的字符都为同一个字符,那么这个子串应当用“KX”(X为子串中的字符)代替;

2.如果K=1,则应当忽略1;

输入

第一行包含一个整数N(1 <= N <= 100),表示测试用例的数目。下一个N行包含N个字符串。每个字符串由“A”—“Z”组成,长度小于10000。

输出

对于每个测试用例,将编码的字符串输出到一行中。

样例输入

2

ABC

ABBCCC

样例输出

ABC

A2B3C

#include
#include
int main()
{
    int N,i=0,j=0,f=0;
    scanf("%d",&N);
    char string[10000];
    for(i=0;ij)printf("%d",f-j+1);/*如果有相同字符则输出k*/
            printf("%c",string[j]);/*统一输出字符*/
            j=f;/*首字符指向这一次计数的末尾*/
            j++;/*首字符指向下一个异字符,开始第二次计数*/
        }
        printf("\n");
    }
    
    return 0;
}

2将一个字符串循环左移i个位置

题目描述

将一个字符串循环左移i个位置。

输入

第一行:一个字符串

第二行:整数i

输出

字符串的循环左移i位的结果

#include
#include
int main()
{
    int i,j=0,k=0,u;
    char string[1000000],flag;
    scanf("%s",string);
    scanf("%d",&i);
    u=strlen(string);
    
    for(j=0;j
#include 
int main(void){
    char ch[101];
    gets(ch); //读入字符串
    
    int N;
    scanf("%d",&N); //读入移动次数
    
    char *p = ch,first;
    while(N > 0){
        first = ch[0]; //记录首位字符
        while(*(p+1) != '\0'){
            *p = *(p+1);
            p++;
        }
        *p = first; //注意:此时的*p就是*(p+1),即最后一位
        p = ch; //p指回首位字符
        N--;
    }
    puts(ch);
    return 0;
}

3,字符串倒序

#include 
#include
int main()
{
    char c[200],c1;
    int i,j,k;
    gets(c);
    k=strlen(c);
    for(i=0,j=k-1;i<(k/2);i++,j--)
    {  c1=c[i];c[i]=c[j];c[j]=c1;}
    puts(c);
    return 0;
}

  1. 删除字符串中元素

你可能感兴趣的:(C语言题型整理,算法,c语言)