IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 《算法零基础100讲》(第25讲) 字符串算法(五) - 字符串反转《解题报告》 -> 正文阅读

[数据结构与算法]《算法零基础100讲》(第25讲) 字符串算法(五) - 字符串反转《解题报告》

《算法零基础100讲》(第25讲) 字符串算法(五) - 字符串反转_英雄哪里出来-CSDN博客

字符串的反转经常会出现在各种题中,现在介绍两种c++反转字符串的方法.

#include<iostream>
#include<cstring>
using namespace std;
int main()
{
    char s[10000];
    cin>>s;
    strrev(s);//cstring库函数里的
    cout<<s<<endl;
    return 0;
}
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int main()
{
    string s;
    cin>>s;
    reverse(s.begin(),s.end());//algorithm库函数
    cout<<s<<endl;
    return 0;
}

344. 反转字符串 - 力扣(LeetCode) (leetcode-cn.com)?

void reverseString(char* s, int sSize){
    for (int i = 0; i < sSize / 2; i++) {//对半分
        char c = s[i];//交换下标
        s[i] = s[sSize -i - 1];
        s[sSize -i - 1] = c;
    }
}

2000. 反转单词前缀 - 力扣(LeetCode) (leetcode-cn.com)

给你一个下标从 0 开始的字符串 word 和一个字符 ch 。找出 ch 第一次出现的下标 i ,反转 word 中从下标 0 开始、直到下标 i 结束(含下标 i )的那段字符。如果 word 中不存在字符 ch ,则无需进行任何操作。

例如,如果 word = "abcdefd" 且 ch = "d" ,那么你应该 反转 从下标 0 开始、直到下标 3 结束(含下标 3 )。结果字符串将会是 "dcbaefd" 。
返回 结果字符串 。

示例 1:

输入:word = "abcdefd", ch = "d"
输出:"dcbaefd"
解释:"d" 第一次出现在下标 3 。?
反转从下标 0 到下标 3(含下标 3)的这段字符,结果字符串是 "dcbaefd" 。

示例 2:

输入:word = "xyxzxe", ch = "z"
输出:"zxyxxe"
解释:"z" 第一次也是唯一一次出现是在下标 3 。
反转从下标 0 到下标 3(含下标 3)的这段字符,结果字符串是 "zxyxxe" 。

示例 3:

输入:word = "abcd", ch = "z"
输出:"abcd"
解释:"z" 不存在于 word 中。
无需执行反转操作,结果字符串是 "abcd" 。
?

提示:

1 <= word.length <= 250
word 由小写英文字母组成
ch 是一个小写英文字母

?第一种c++stl

class Solution {
public:
    void reverseString(vector<char>& s) {
reverse(s.begin(),s.end());
    }
};

第二种众人皆知

class Solution {
public:
    void reverseString(vector<char>& s) {
int len=s.size()-1;
int l=0;
while(l<len)
{
    swap(s[l++],s[len--]);//将前后字母全部交换
}
    }
};

7. 整数反转 - 力扣(LeetCode) (leetcode-cn.com)

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。

如果反转后整数超过 32 位的有符号整数的范围?[?231,??231?? 1] ,就返回 0。

假设环境不允许存储 64 位整数(有符号或无符号)。
?

示例 1:

输入:x = 123
输出:321

示例 2:

输入:x = -123
输出:-321

示例 3:

输入:x = 120
输出:21

示例 4:

输入:x = 0
输出:0
?

提示:

-231 <= x <= 231 - 1

class Solution {
public:
    int reverse(int x) {
long t=0;
while(x)
{
    t=t*10+x%10;
    x=x/10;
}
return (t>INT_MAX||t<INT_MIN)?0:t;//c++,limits函数库
    }
};

2000. 反转单词前缀 - 力扣(LeetCode) (leetcode-cn.com)

给你一个下标从 0 开始的字符串 word 和一个字符 ch 。找出 ch 第一次出现的下标 i ,反转 word 中从下标 0 开始、直到下标 i 结束(含下标 i )的那段字符。如果 word 中不存在字符 ch ,则无需进行任何操作。

例如,如果 word = "abcdefd" 且 ch = "d" ,那么你应该 反转 从下标 0 开始、直到下标 3 结束(含下标 3 )。结果字符串将会是 "dcbaefd" 。
返回 结果字符串 。

示例 1:

输入:word = "abcdefd", ch = "d"
输出:"dcbaefd"
解释:"d" 第一次出现在下标 3 。?
反转从下标 0 到下标 3(含下标 3)的这段字符,结果字符串是 "dcbaefd" 。

示例 2:

输入:word = "xyxzxe", ch = "z"
输出:"zxyxxe"
解释:"z" 第一次也是唯一一次出现是在下标 3 。
反转从下标 0 到下标 3(含下标 3)的这段字符,结果字符串是 "zxyxxe" 。

示例 3:

输入:word = "abcd", ch = "z"
输出:"abcd"
解释:"z" 不存在于 word 中。
无需执行反转操作,结果字符串是 "abcd" 。
?

提示:

1 <= word.length <= 250
word 由小写英文字母组成
ch 是一个小写英文字母

?这里需要了解find函数,string自带的函数find(),可查找指定字符串和指定字符。

使用方法:例如在string1中查找string2,string1.find(string2);

返回值为string2第一次在string1出现的位置。

如果希望在特定位置开始查找,可以使用string1.find(string2,location);

class Solution {
public:
    string reversePrefix(string word, char ch) {
        reverse(word.begin(),word.begin()+word.find(ch)+1);
        return word;
    }
};

345. 反转字符串中的元音字母 - 力扣(LeetCode) (leetcode-cn.com)

这道题借用了英雄哥的思想,属实不会了,然后我看完英雄哥的思想后又找了类型题做的

char vowels[] = "aeiouAEIOU";//将所有元音字母打出来以方便判断

bool isVowel(char c) {//用来判断的函数
    int i;
    for(i = 0; vowels[i]!='\0'; ++i) {//这里的for循环大家可能会很陌生,相当于for(int i=0;vowels[i];++i)
        if(vowels[i] == c) {//判断是否是元音字母
            return true;
        }
    }    
    return false;
}

void swap(char *a, char *b) {//交换变量,指针部分
    char tmp = *a;
    *a = *b;
    *b = tmp;
}

char * reverseVowels(char * s){
    int i = 0, j = strlen(s)-1;    
    while(i < j) {
        while(s[i] && !isVowel(s[i]))//如果从前往后判断,不是元音字母则i自增
            ++i;                    
        while(j >= 0 && !isVowel(s[j]))//如果从后往前判断,不是元音字母则自减
            --j;                    
        if(i >= j) break;//如果i>j就没必要自增了,因为你前一部分都没有元音字母,后一部分有也无所谓了,即不能互换           
        swap( &s[i], &s[j] );       
        ++i, --j;//继续往中间靠近直到i=j结束while循环                   
    }
    return s;

}

这段时间较忙,待我有时间一定会找出题的最优解

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-11-16 19:05:28  更:2021-11-16 19:06:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 11:45:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码