首页 > 编程语言 >字符串翻转(C++)

字符串翻转(C++)

时间:2024-03-23 19:34:24浏览次数:14  
标签:子串 int C++ token num str 字符串 翻转

示例:

        翻转前:to be or not to be

        翻转后:ot eb ro ton ot eb

基本思路:

        利用strtok字符串切割函数拿到每一部分,存储到一个字符串数组中,再将每一个字符串数组倒置。最后顺序输出。

程序代码:

#include<iostrem>
#include<string>
#include<cstring>

string daozhi(string str)//倒置函数 
{
    for (int i = 0; i < str.length()/2; i++)
    {
        char temp = str[i];
        str[i] = str[str.length()- 1-i];
        str[str.length()- 1-i] = temp;
    }
    return str;
}
int main()
{
    char s[100];
    gets(s);//
    string str[100];//字符串类型的数组 
    char *token = strtok(s, " ");//strtok 返回的是切割字符串的首地址
    int num = 0;//有效位置
    while (token != NULL)//通过切割函数,拿到每个子字符串
    {
        str[num] = token;//str[0]第一个子串,str[1]第二个子串
        num++;
        token = strtok(NULL, " ");
    }
    //倒置每个子串str[0],str[1].....
    for (int i = 0; i < num; i++)//num为子串有效位置
    {
        str[i] = daozhi(str[i]);//倒置
    }
    int flag = 0;//利用标志控制输出格式 
    for (int i = 0; i < num; i++)//循环输出每个子串
    {
        if (flag == 0)
            flag = 1;
        else
            cout << " ";
        cout << str[i];
    }
}

运行结果:

标签:子串,int,C++,token,num,str,字符串,翻转
From: https://blog.csdn.net/m0_74779497/article/details/136973201

相关文章

  • 2024华为OD统一考试(C卷)最新题库(Java & Python & C++)
    关于华为OD​华为的员工补充途径有三种,分别是校招、OD转正和社招。校招是华为唯一的正式员工入职途径,但是从近几届开始竞争非常激烈,尤其是在CV、AI、NLP等赛道上,所以对于C9等专业的学生来说,可以考虑转向一些冷门方向。​OD转正是指在华为工作满一年之后,可以根据部门OD......
  • lc2953 统计完全子字符串的数目
    给定只包含小写字母的字符串word和整数k,如果s的某个子串中每个字符恰好出现k次,并且相邻字母最多相差2,则称其为完全字符串。求word中完全字符串的数目。1<=word.length<=1e5;1<=k<=word.length预处理出每个字母出现次数的前缀和,这样可以O(1)得到区间[l,r]内某个字母的出现次数。......
  • C++之引用
    1.引用的概念引用不是定义一个变量,而是给已经存在的变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它所引用的变量使用同一块内存空间。类型&引用变量名(对象名)=引用实体 inta=10;int&b=a;//表示b是a的别名运行结果如下: 注意:引用类型必须和引用实......
  • UE4 c++ -- 简单的UMG
    说明学习一下如何将Widget蓝图与C++连接起来,将处理逻辑写在C++中基础在蓝图中,我们显示Widget是通过一个Actor或者PlayerController,甚至关卡蓝图,利用CreateWidget以及AddToViewPort使得Widget显示在屏幕上的所以在C++中也是一样,一般来说由于Actor的销毁比如角色死亡,会导致其......
  • 复试C++看程序写结果 易错
    复试C++看程序写结果  易错#include<iostream>usingnamespacestd;voidfunction(char*&s1,char*&s2){inti=0;for(;*s1!=*s2;s1++,s2++)i++;//当两个指针同时指向字符'a'时,循环结束,i=7*(s1-1)='\0';*(s2-1)=......
  • 代码随想录算法训练营第五十五天| ● 583. 两个字符串的删除操作 ● 72. 编辑距离
    两个字符串的删除操作 题目链接:583.两个字符串的删除操作-力扣(LeetCode)思路:第一次尝试用画图法,然后肉眼观察dp递归规律……但是dp[i][j]的含义还是参考昨天的思路,表示到此处需要删除多少个字符。classSolution{public:intminDistance(stringword1,stringword2......
  • c++小游戏
    #include<bits/stdc++.h>#include<windows.h>usingnamespacestd;inta,b,c;voidOK(){ system("cls"); cout<<"你时不时有饼?\n(1:yes2:NO)\n"; cin>>a; if(a==1){ cout<<"您以通关!"; }else{ system(&q......
  • C/C++知识总结(2)
    1.C++中的class和struct区别两者都有成员函数以及公有私有部分;class成员默认private,struct成员默认public。class默认private继承,struct默认public继承。2.C与C++中struct区别C语言中struct是用户自定义数据类型;C++中struct是抽象数据类型,支持成员函数的定义。C语言中stru......
  • C++U6-09 - 数学专题(二)各种进制知识
    学习目标 进制  二进制转十进制 二进制 代码 十进制转二进制代码 十进制转二进制小数方式,转其他进制同理 二进制转八进制方法二 八进制转二进制方法二二进制转十六进制方法二 代码 代码 十六进制转换成二进制 n进制转十进制小数部分......
  • 字符串转base64或二进制
    /***字符串转base64*@paramstr*@returns*/functionmyEncode(str){////对字符串进行编码varencode=encodeURI(str.replace(/\+/g,'躞'));//+在后台转明文会丢////对编码的字符串转化base64varbase64=btoa(encode);......