每日一题——倒置字符串

简介: 将一句话的单词进行倒置,标点不倒置。比如 I like beijing. 经过函数后变为:beijing. like I

题目来源于牛客网

image.gif编辑

描述

将一句话的单词进行倒置,标点不倒置。比如 I like beijing. 经过函数后变为:beijing. like I

输入描述:

每个测试输入包含1个测试用例: I like beijing. 输入用例长度不超过100


输出描述:

依次输出倒置之后的字符串,以空格分割

示例1

输入:

I like beijing.

输出:

beijing. like I

解题思路:

先将字符串整体翻转,再对翻转后的字符串中的每一个单词部分进行二次翻转。

提示:字符串结束标识为 '\0';  当我们遍历字符串遇到空格时,我们就可以解释为遇到了单词。

例如:I Like beijing.

第一步,字符串整体逆置,得到:.gnijieb ekil I

第二步,将字符串中的每一个单词逆置,得到:biejing. like I

博主为大家带来两种做法,一种是普通做法,适合编程初学者理解,一种是涉及到指针,通用函数用于翻转。

普通做法:

#include<stdio.h>#include<string.h>voidFStr(char*Str, intn)
{
inti=n-1;
//定义一个字符类型的数组a,用于存储翻转后的数据chara[150] = { 0 };
while (*Str!='\0')
    {
a[i]=*Str;
++Str;
--i;
    }
//将整体翻转的字符串,拷贝至Str数组,改变原数据strcpy(Str,a);
/*i = 0;while (i<n){Str[i] = a[i];++i;}*/for (i=0;i<n-1;++i)
    {
intj=i;
//遍历确定空格前的字符个数,可以理解为单词while (a[j] !='\0'&&a[j] !=' ')
        {
++j;
        }
intindex=i;
//翻转空格前的字符,给到Str数组while (j>index)
        {
Str[i] =a[j-1];
--j;
++i;
        }
    }
//翻转完成打印Strprintf("%s\n",Str);
}
intmain()
{
charStr[150]= {0};
//输入字符串gets(Str);
//逆FStr(Str,strlen(Str));
return0;
}

image.gif

进阶做法:

#include <stdio.h>#include <string.h>voidFStr(char*begin, char*end)//翻转字符串{
while(begin<=end)
    {
chartmp=*begin;
*begin=*end;
*end=tmp;
++begin;
--end;
    }
}
intmain()
{
charstr[100] ={0};
gets(str);
//记录字符串里字符的个数intn=strlen(str);
//将字符串整体翻转FStr(str, str+n-1);//str+n-1,相当于&str[n-1]char*start=str;
//将字符串中的每个单词翻转while(*start)
    {
char*end=start;
//遍历确认空格前字符的个数while(*end!=' '&&*end!='\0')//寻找空格或'\0'        {
end++;
        }
//翻转空格、结束标志'\0'前的字符FStr(start, end-1);
if(*end==' ')//跳过空格不参与翻转        {
start=end+1;
        }
else        {
start=end;
        }
     }
//打印printf("%s",str);
return0;
}

image.gif

感兴趣的朋友可以点击链接尝试用博主的方法,或者是自己的方法做做。

题目来源于:牛客网

链接:倒置字符串__牛客网

感谢每一个观看本篇文章的朋友,更多精彩敬请期待:保护小周ღ  

image.gif编辑

如有侵权请联系修改删除!

相关文章
|
算法 Java 索引
【洛谷算法题】P5704-字母转换【入门1顺序结构】
【洛谷算法题】P5704-字母转换【入门1顺序结构】
|
C语言
【每日一题】 将一句话单词倒置,标点不倒置
【每日一题】 将一句话单词倒置,标点不倒置
203 0
【每日一题】 将一句话单词倒置,标点不倒置
|
7月前
|
人工智能 算法 Java
每日一刷《剑指offer》字符串篇之编辑距离
每日一刷《剑指offer》字符串篇之编辑距离
69 0
每日一刷《剑指offer》字符串篇之编辑距离
|
7月前
|
Java 测试技术 Python
每日一题《剑指offer》字符串篇之表示数值的字符串
每日一题《剑指offer》字符串篇之表示数值的字符串
55 0
每日一题《剑指offer》字符串篇之表示数值的字符串
|
7月前
|
Java
每日一题《剑指offer》字符串篇之字符串的排列
每日一题《剑指offer》字符串篇之字符串的排列
81 0
每日一题《剑指offer》字符串篇之字符串的排列
|
7月前
|
机器人 Java
每日一刷《剑指offer》字符串篇之第一个只出现一次的字符
每日一刷《剑指offer》字符串篇之第一个只出现一次的字符
73 0
每日一刷《剑指offer》字符串篇之第一个只出现一次的字符
|
7月前
|
存储 算法 API
☆打卡算法☆LeetCode 151. 颠倒字符串中的单词 算法解析
☆打卡算法☆LeetCode 151. 颠倒字符串中的单词 算法解析
|
算法
代码随想录算法训练营第八天 | LeetCode 344.反转字符串、541. 反转字符串II、剑指Offer 05.替换空格、151.翻转字符串里的单词、剑指Offer58-II.左旋转字符串
代码随想录算法训练营第八天 | LeetCode 344.反转字符串、541. 反转字符串II、剑指Offer 05.替换空格、151.翻转字符串里的单词、剑指Offer58-II.左旋转字符串
63 0
|
算法 索引
代码随想录算法训练营第八天 | 344.反转字符串541. 反转字符串II 剑指Offer 05.替换空格151.翻转字符串里的单词剑指Offer58-II.左旋转字符串
代码随想录算法训练营第八天 | 344.反转字符串541. 反转字符串II 剑指Offer 05.替换空格151.翻转字符串里的单词剑指Offer58-II.左旋转字符串
|
算法 Python
【完虐算法】「字符串-最长公共前缀」5种方法脑洞大开
最近在专题制作过程中遇到了**最长前缀公共子串**的问题,也是读者最近校招面试到的一个题目。为什么拿出这个来说呢? 可怕的是,他居然给了 5 种解题方法。 更可怕的是,因此他直接少了一轮面试,天哪!!
400 0

热门文章

最新文章