首页 > 其他分享 >字符串的处理

字符串的处理

时间:2024-07-03 14:56:35浏览次数:17  
标签:输出 字符 处理 int num str 字符串

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录



一、最简单的回文字符串

如果一个字符串逆序后与正序相同,那么称这个字符串为回文字符串。例如abcba是回文字符串,abcca不是回文字符串。

给定一个字符串,判断它是否是回文字符串。

#include<iostream>//有输入输出的时候添加
#include<cstring>
using namespace std;
bool shuru(string str){
    for (int i=0;i<str.length()/2;i++){
        if(str[i]!=str[str.length()-i-1]){
            return false;//c++可以直接用longth函数因为调用了string函数
        }
          
        
    }return true;
}
int main(){
    string str;
    cin>>str;
    cout<<(shuru(str)?"YES":"NO");
    return 0;
}

二、单词倒叙

给定一堆用空格隔开的英文单词,输出这些英文单词的倒序(单词内部保持原序)。
代码如下(示例):

#include<cstdio>
const int MAXN=100;
const int maxl=100;
char str[MAXN][maxl],num=0;//其中 MAXN 表示数组的行数,即可以存储的字符串数量上限;而 maxl 表示每个字符串的最大长度
int main(){
    while(scanf("%s",str[num])!=EOF){
        num++;
    }
    for(int i=num-1;i>=0;i--){
        printf("%s",str[i]);
        if(i>0){
            printf(" ");
        }
    }
    return 0;
}

三,单词倒叙二

给定一堆用空格隔开的英文单词,将每个单词内部逆序后输出(单词顺序不变)。

#include<cstdio>
const int maxn=100;
char str[maxn],num=0;
int main(){
   while(scanf("%s",str)!=EOF){
       num++;
   }
   printf("%d",num);
   return 0;
}

四,单词数

给定一堆用空格隔开的英文单词,统计单词个数
输出一个整数,表示单词的个数。
代码如下(示例):

#include<cstdio>
const int maxn=100;
char str[maxn],num=0;
int main(){
    while(scanf("%s",str)!=EOF){
        num++;
    }
    printf("%d",num);
    return 0;
}

五,首字母大写

输入
good good study
输出
Good Good Study

#include<cstdio>
#include<cstring>
const int maxn=1000;
const int maxl=11;
char str[maxn][maxl];
int num=0;
int main (){
    while(scanf("%s",str[num])!=EOF){
        num++;
    }for(int i=0;i<num;i++){
        int len=strlen (str[i]);
        printf("%c",str[i][0]+('A'-'a'));//在 C 语言中,%c格式对应的是单个字符,%s格式对应的是字符串。
        for(int j=1;j<len;j++){
            printf("%c",str[i][j]);
        }
           if(i<num-1){//按顺序循环完了,再接着才轮到if语句,if语句用来判断是不是最后一个单词,不是的话输出空格,其中减一是因为i是从0开始的
             printf(" ")  ;}
     
    }
    return 0;
}

六、公共前缀

输出
个字符串的公共前缀。如果没有公共前缀,那么输出空行。
输入
3
actrpg
actfps
actarpg
输出
act

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;

const int MAXN = 20;  // 定义最大字符串数量
const int MAXL = 51;  // 定义单个字符串的最大长度
char str[MAXN][MAXL];  // 定义字符串数组

/**
 * 主函数
 * @return 程序返回值,一般为 0 表示正常结束
 */
int main() {
    
    int n, minL = MAXL;  // 定义字符串数量 n 以及最短字符串长度初始值为 MAXL
    cin >> n;  // 输入字符串数量
      getchar();// 清除输入缓冲区中的换行符              
    for (int i = 0; i < n; i++) { //循环读取 n 个字符串
        cin.getline(str[i], MAXL);  // 读取每个字符串并存入数组,完整的内容(接收字符串的变量, 接收字符个数, 结束字符)
        minL = min(minL, (int)strlen(str[i]));  // 更新最短字符串长度
    }
    /**
     * 比较每个字符串相同位置的字符
     */
    for (int j = 0; j < minL; j++) {
        bool isSame = true;  // 初始化标志,表示当前位置字符是否相同
        /**
         * 从第二个字符串开始与第一个字符串比较当前位置字符
         */
        for (int i = 1; i < n; i++) {
            if (str[i][j]!= str[0][j]) {  // 如果有不同
                isSame = false;  // 修改标志
                break;  // 结束内层循环
            }
        }
        if (isSame) {  // 如果标志为真,即所有字符串当前位置字符相同
            printf("%c", str[0][j]);  // 输出该字符
        } else {  // 否则
            break;  // 结束外层循环
        }
    }
    printf("\n");  // 输出换行符
    return 0;  // 程序正常结束,返回 0
}

六、连续相同字符统计

给定一个字符串,统计其中连续出现的相同字符个数。
输入描述
一个非空字符串(长度不超过100,仅由小写字母组成)。

输出描述
按从左到右字符出现的顺序,输出每个字符连续出现的个数。

其中每个字符输出一行,每行以空格为分隔,输出该字符与出现的个数。
输入

abbbcc

输出

a 1
b 3
c 2

#include <cstdio>
#include <cstring>
const int MAXL = 101;  // 定义字符串最大长度限制
char str[MAXL];        // 用于存储输入的字符串
int main(){
    scanf("%s",str);     // 从标准输入读取字符串
    int idx=0, len=strlen(str);  // 初始化索引为 0,获取字符串长度
    while (idx < len) {  // 只要索引未超出字符串长度,执行以下操作
        printf("%c ", str[idx++]);  // 输出当前字符,并将索引向前移动一位
                                       // 统计当前字符连续出现的次数
        int cnt = 1;  // 初始化为 1,因为当前字符已算一次
        while (idx < len && str[idx] == str[idx - 1]) {  // 当索引未越界且当前字符与前一个相同
            cnt++;  // 出现次数加 1
            idx++;  // 索引向前移动
        }
        printf("%d\n", cnt);  // 输出当前字符连续出现的次数
    }
    return 0;
}

//这个内层循环的条件是 idx 仍然小于字符串长度,并且当前字符 str[idx] 与前一个字符 str[idx - 1] 相同。只有同时满足这两个条件,内层循环才会继续执行,从而使 cnt 增加,idx 也继续增加。
//也就是说,只有当连续出现相同字符时,才会进入内层循环并可能再次输出相同的字符及其出现次数。而一旦遇到不相同的字符,内层循环条件不满足,就不会再输出相同的字符了,而是会继续外层循环,处理下一个字符。
//例如,对于字符串 “aabcccd”,首先输出 ‘a’,然后 idx 加 1。此时下一个字符也是 ‘a’,满足内层循环条件,所以会再次输出 ‘a’,并继续增加 cnt 和 idx。但当遇到 ‘b’ 时,内层循环条件不再满足,就不会再输出 ‘a’ 了,而是输出 ‘b’ 及其连续出现的次数 1,以此类推。这样就能准确地统计并输出每个连续相同字符的情况,而不会出现无限制地连续输出相同字母的现象。

七,C语言合法变量名

一个合法的C语言变量名需要满足:

所有字符必须由且仅由字母(A-Z,a-z)、数字(0-9)、下划线(_)组成;
首字符不能是数字,可以是字母或下划线;
不能是C语言关键字,如if、while等。
给定一个非C语言关键字的字符串,判断其是否可以作为合法的C语言变量名。

const int maxl=21;
char str[maxl];

int main(){
    scanf("%s",str);
    bool result=true;
    int len=strlen(str);
    if(!((str[0]>='A'&&str[0]<='Z')||(str[0]>='a'&&str[0]<'z')||str[0]=='_')){
        result=false;
    }
    for(int i=1; i< len;i++){
        if(!((str[i]>='A'&&str[i]<='Z')||(str[i]>='a'&&str[i]<'z')||(str[i]>='0'&&str[i]<'9')||str[i]=='_')){
            result=false;
            break;
        }
    }
    printf(result?"YES":"NO");
    return 0;
}

标签:输出,字符,处理,int,num,str,字符串
From: https://blog.csdn.net/byc123123w/article/details/140085230

相关文章

  • Pandas数据处理
    Pandas数据处理1.操作行名和列名(1)设置某一列为行名df.set_index(列名,drop=布尔值)#drop表示是否删除这一列importpandasaspddata=[["0001",'苹果',5,'山东'],["0002",'香蕉',3,'海南'],["0003",'橙子......
  • C#面:编程长度为10000的字符串,通过随机从a-z中抽取10000个字符组成
    使用C#中的Random类来生成随机字符,并使用StringBuilder类来构建字符串。以下是一个示例程序:usingSystem;usingSystem.Text;classProgram{staticvoidMain(){Randomrandom=newRandom();StringBuilderstringBuilder=newStringBuild......
  • 151.翻转字符串里的单词 卡码网:55.右旋转字符串
    151.翻转字符串里的单词卡码网:55.右旋转字符串 151.翻转字符串里的单词题目链接:151.反转字符串中的单词-力扣(LeetCode) Code:classSolution{public:  stringreverseWords(strings){​    //单词级翻转,而不是单词内翻转  ​......
  • 【自动化测试数据管理】对于不可重复使用的测试数据(一次性的测试数据),自动化实现过程
    准备不可重复使用的测试数据,其实是一件比较让人头疼的一件事。因为只能使用一次,每次运行之前都要准备新的数据,工作量不可谓不大。而且如果数据本身比较复杂或者稀少,这个数据准备工作就更让人怀疑这些功能用自动化的方式来测试是否有价值。那么对于这种一次性的测试......
  • 03 | 大规模数据处理初体验:怎样实现大型电商热销榜?
    今天要与你分享的主题是“怎样实现大型电商热销榜”。在Google面试过很多优秀的候选人,应对普通的编程问题coding能力很强,算法数据结构也应用得不错。可是当我追问数据规模变大时该怎么设计系统,他们却说不出所以然来。这说明他们缺乏必备的规模增长的技术思维(mindsetofs......
  • 浅谈前置处理器之取样器超时
    浅谈前置处理器之取样器超时取样器取样器超时设置决定了JMeter等待取样器完成并接收响应的最大时间长度。如果在这个时间内未收到响应,取样器将标记该请求为超时错误。参数说明●在取样器超时的配置界面找到“Sampletimeout(inmilliseconds)进行设置。●超时值以毫秒......
  • 10.优化算法之字符串
    1.最长公共前缀14.最长公共前缀-力扣(LeetCode)classSolution{publicstaticStringlongestCommonPrefix(String[]strs){if(strs==null||strs.length==0){return"";}intlength=strs.length;for(inti=0;i&l......
  • 浅谈前置处理器之用户参数
    浅谈前置处理器之用户参数“用户参数”前置处理器是一个非常实用的功能,它可以在每个请求执行前动态地为HTTP请求等添加或替换变量值。本文档将详细介绍“用户参数”前置处理器的使用方法、特点以及与用户定义变量的区别。用户参数前置处理器简介用户参数前置处理器允许你......
  • 有手就会的 Java 处理压缩文件
    @目录前言背景第一步:编写代码1.1请求层1.2业务处理层1.3新增配置第二步:解压缩处理2.1引入依赖2.2解压缩工具类总结前言请各大网友尊重本人原创知识分享,谨记本人博客:南国以南i、提示:以下是本篇文章正文内容,下面案例可供参考背景在项目出现上传文件,其中文件包含压缩包,......
  • Pandas数据清洗处理分析
    Pandas是一个开源的Python数据分析库,它提供了快速、灵活且表达力强的数据结构,旨在使数据清洗和分析工作变得更加简单易行。以下是Pandas在数据清洗和分析中常用的一些功能:1.**数据加载**:Pandas可以读取多种格式的数据,包括CSV、Excel、SQL数据库、JSON等。2.**数据框(DataF......