C语言题:将s串中所有字符前移一个位置,第一个字符移到最后。谢谢帮
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言题:将s串中所有字符前移一个位置,第一个字符移到最后。谢谢帮相关的知识,希望对你有一定的参考价值。
C语言题:将s串中所有字符前移一个位置,第一个字符移到最后。谢谢帮忙解答的各位
将s串中所有字符前移一个位置,第一个字符移到最后:
intlen=strlen(s);
charc=s[len-1];
s[len-1]=s[0];
s[0]=c;
扩展资料
字符串中字母顺序前移,其他字符顺序后移。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char*fun(char*s)
inti,j,k,n;
char*p,*t;
n=strlen(s)+1;
t=(char*)malloc(n*sizeof(char));
p=(char*)malloc(n*sizeof(char));
j=0;
k=0;
for(i=0;i<n;i++)
if(((s[i]>='A')&&(s[i]<='Z'))||((s[i]>='a')&&(s[i]<='z')))
t[j]=s[i];
j++;
else
p[k]=s[i];
k++;
for(i=0;i<k;i++)
t[j+i]=p[i];
t[j+k]=0;
returnt;
intmain()
chars[80];
printf("Pleaseinput:");
gets(s);
printf("\\nTheresultis:%s\\n",s);
printf("\\nTheresultis:%s\\n",fun(s));
getchar();
getchar();
return0;
参考技术A char *func(char *s)char c;
char *p = s;
c=*p++;
while(*p)
*(p-1) = *p;
p++;
*(p-1) = c;
return s;
参考技术B int len = strlen(s);
char c = s[len - 1];
for (i = 0; i < len - 2; ++ i)
s[i] = s[i + 1];
s[len - 1] = c;
算法题-第K个小子串
第K小子串
输入一个字符串 s,s 由小写英文字母组成,保证 s 长度小于等于 5000 并且大于等于 1。在 s 的所有不同的子串中,输出字典序第 k 小的字符串。
字符串中任意个连续的字符组成的子序列称为该字符串的子串。
字母序表示英文单词在字典中的先后顺序,即先比较第一个字母,若第一个字母相同,则比较第二个字母的字典序,依次类推,则可比较出该字符串的字典序大小。
输入:
第一行输出一个字符串 s,保证 s 长度小于等于 5000 大于等于 1。
第二行一个整数 k (1<= k <= 5),保证 s 不同子串个数大于等于 k。
输出:
输出一个字符串表示答案。
这道题数据量不大,直接暴力枚举,利用set本身的有序性
#include <iostream>
#include <set>
using namespace std;
int main()
string str;
cin >> str;
int k;
cin >> k;
set<string> s;
for (int i = 0; i < str.size(); i++)
for (int j = i; j < str.size(); j++)
if (j - i + 1 > k)
break;
string t = str.substr(i, j - i + 1);
// cout << t << endl;
s.insert(t);
if (s.size() > k)
s.erase(--s.end());
cout << *(--s.end()) << endl;
以上是关于C语言题:将s串中所有字符前移一个位置,第一个字符移到最后。谢谢帮的主要内容,如果未能解决你的问题,请参考以下文章
C语言试题六十三之请编写函数fun:将s所指字符串中ascii值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。
C语言试题六十三之请编写函数fun:将s所指字符串中ascii值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。