ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

[题解]《C语言入门100例》(第14例) 字符串翻转

2021-11-15 19:59:57  阅读:102  来源: 互联网

标签:tmp word int 题解 C语言 char 反转 字符串 100


文章目录

概念定义

  字符反转就是将一个字符串翻转过来,通常我们都是分别从首位同时进行调换,或则重新定义一个字符数组,将原本的字符串从尾部一一赋值给新串。
代码如下:

#include <stdio.h>

void Reserved(char* s, int sSize){
	int left = 0, right = sSize - 1;
	while (left < right){
		char tmp = s[left];
		s[left] = s[right];
		s[right] = tmp;
		left++; right--;
	}
}

int main(){
	char str[] = "abcdefg";
	Reserved(str, strlen(str));
	printf("%s\n", str);//输出结果gfedcba
	return 0;
}

二. 课后习题

2.1 反转字符串

题目链接:
344. 反转字符串
这道题很简单就不细讲了,左右两边对调,并且同时向中间靠近。
代码如下:

void reverseString(char* s, int sSize){
    int l = 0;
    int r = sSize - 1;
    while(l < r){
        char tmp = s[l];
        s[l] = s[r];
        s[r] = tmp;
        l++;r--;
    }
}

2.2. 反转单词前缀

题目链接:
2000. 反转单词前缀
思路分析:
  首先我们给找到它所给字母第一次出现的位置,然后再根据字符串反转的方法,将前缀反转即可。
  此外我们还需考虑特殊情况,就是所给的字母没有出现,那我们无需反转。
代码如下:

char * reversePrefix(char * word, char ch){
    int r;
    int n = strlen(word);
    for(int i = 0; i < n; i++){
        //寻找ch的下标
        if(word[i] == ch){
            r = i;break;
        }
        //如果没有则直接返回原串
        if(i == (n - 1)){
           return word; 
        }
    }
    int l = 0;
    //反转前缀
    while(l < r){
        char tmp = word[l];
        word[l] = word[r];
        word[r] = tmp;
        l++;r--;
    }
    return word;
}

2.3 反转字符串中的元音字母

题目链接:
345. 反转字符串中的元音字母
思路分析:
  这道题只需要我们反转元音字母,所以我们要做的第一步就是将所有的元音字母记录下来,那么剩下的步骤就是将他们调转即可。
代码如下:

//判断元音字母
bool isVowels(char s){
    if(s == 'a' || s == 'e' || s == 'i' || s == 'o' || s == 'u'){
        return true;
    }
    if(s == 'A' || s == 'E' || s == 'I' || s == 'O' || s == 'U'){
        return true;
    }
    return false;
}

char * reverseVowels(char * s){
    int n = strlen(s);
    int Vowels[n];
    int Vsize = 0;
    //记录元音字母的下标
    for(int i = 0; i < n; i++){
        if(isVowels(s[i])){
            Vowels[Vsize++] = i;
        }
    }
    int l = 0, r = Vsize - 1;
    //调换元音字母
    while(l < r){
        char tmp = s[Vowels[l]];
        s[Vowels[l]] = s[Vowels[r]];
        s[Vowels[r]] = tmp;
        l++;r--;
    }
    return s;
}

标签:tmp,word,int,题解,C语言,char,反转,字符串,100
来源: https://blog.csdn.net/qq_53060585/article/details/121341841

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有