首页 > 编程语言 >代码随想录算法训练营第八天|344.反转字符串、541.反转字符串Ⅱ、54.替换数字(卡码网是真滴不好用)

代码随想录算法训练营第八天|344.反转字符串、541.反转字符串Ⅱ、54.替换数字(卡码网是真滴不好用)

时间:2024-07-04 18:32:56浏览次数:16  
标签:tmp reverse int 反转 随想录 len 344 start 字符串

344简单 写个循环

 1 class Solution {
 2 public:
 3     void reverseString(vector<char>& s) {
 4         char tmp;
 5         int len = s.size();
 6         for (int i = 0; i < len/2; i++) {
 7             tmp = s[i];
 8             s[i] = s[len - i -1];
 9             s[len - i - 1] = tmp;
10         }
11     }
12 };

541把344拿来当函数了 分段进行循环

 1 class Solution {
 2 public:
 3     string reverseStr(string s, int k) {
 4         int len = s.size();
 5         int t = 0;
 6         while (len > 0) {
 7             if (len < k) {
 8                 reverse(s, t, len); // 调用 reverse 函数时传入子串的起始位置 t 和长度 len
 9                 break;
10             }
11             else if (len >= k && len < 2*k) {
12                 reverse(s, t, k); // 调用 reverse 函数时传入子串的起始位置 t 和长度 len
13                 break;
14             }
15             else if(len >= 2*k) {
16                 reverse(s, t, k); 
17                 t += 2*k;
18                 len -= 2*k;
19             }
20         }
21         return s;
22     }
23     
24 private:
25     void reverse(string& s, int start, int k) { // 修改 reverse 函数接收整个字符串 s 的引用
26         char tmp;
27         int end = start + k - 1; // 计算子串的结束位置
28         
29         for (int i = start; i < start + k/2; i++) {
30             tmp = s[i];
31             s[i] = s[end - (i - start)];
32             s[end - (i - start)] = tmp;
33         }
34     }
35 };

54就是做一个判断 遇见了就替换

 1 #include <iostream>
 2 #include <vector>
 3 using namespace std;
 4 
 5 int main() {
 6     string s;
 7     while (cin >> s) {
 8         vector<char> result;
 9         
10         for (char c : s) {
11             if (c >= '0' && c <= '9') {
12                 result.push_back('n');
13                 result.push_back('u');
14                 result.push_back('m');
15                 result.push_back('b');
16                 result.push_back('e');
17                 result.push_back('r');
18             } else {
19                 result.push_back(c);
20             }
21         }
22         // 将 result 转换为字符串并输出
23         cout << string(result.begin(), result.end()) << endl;
24     }
25     return 0;
26 }

 

标签:tmp,reverse,int,反转,随想录,len,344,start,字符串
From: https://www.cnblogs.com/zhuyishao/p/18284415

相关文章

  • 代码随想录算法训练营第九天|151.反转字符串中的单词、55.右旋字符串、28.找出字符串
    151以前写过很呆的写法但能用嘿1classSolution{2public:3stringreverseWords(strings){4//初始化变量5vector<vector<int>>data;//存储单词的起始地址和长度6stringans;//最终结果字符串7intnum=0;......
  • 代码随想录算法训练营第2天 | 数组滑动窗口、螺旋打印
    有序数组的平方。常规方法复习冒泡排序,也可以使用双指针。因为有序数组的平方,最大值一定在两侧,最小值在中间。可以两侧往中间收拢。2024年7月4日笔记:双指针法,两侧往中间逼近一定是从大到小,然后给res数组倒着填即可实现从小到大。题977.有序数组的平方classSolution{pub......
  • Java 中的字符串替换方法详解:replace, replaceAll 和 replaceFirst
    在Java中,字符串的替换是一种常见的操作,特别是在处理文本和格式化输出时。Java提供了几种不同的方法来实现字符串替换,其中包括replace,replaceAll和replaceFirst。本文将详细讨论这些方法的用法、区别以及示例。1.replace(CharSequencetarget,CharSequencereplaceme......
  • 字符串
    AC自动机用于多个模式串(模式串在文本串里面出现),和文本串匹配对模式串建立trie,每个点上维护一个fail,每个节点其实代表一个前缀。若干个模式串形成了若干个前缀字符串集合S。fail[i]表示S中的所有字符串中,能和i这个字符串的后缀完全匹配的最长字符串。(当然这个字符串不能是i......
  • 字符串相似度算法完全指南:编辑、令牌与序列三类算法的全面解析与深入分析
    在自然语言处理领域,人们经常需要比较字符串,这些字符串可能是单词、句子、段落甚至是整个文档。如何快速判断两个单词或句子是否相似,或者相似度是好还是差。这类似于我们使用手机打错一个词,但手机会建议正确的词来修正它,那么这种如何判断字符串相似度呢?本文将详细介绍这个问题。字......
  • 代码随想录算法训练营第四十八天 | 188.买卖股票的最佳时机IV 309.买卖股票的最佳时
    188.买卖股票的最佳时机IV题目链接文章讲解视频讲解动规五部曲:dp数组的含义:dp[j][2*i-1]表示第i次持有股票dp[j][2*i]表示第i次不持有股票递推公式:dp[j][2i-1]=max(dp[j-1][2i-1],dp[j-1][2*i-2]-prices[j]);dp[j][2i]=max(dp[j-1][2i],dp[j-1][2*i-1]......
  • 代码随想录第四十六天 | 322. 零钱兑换,279.完全平方数,139.单词拆分
    322.零钱兑换看完想法:此处是求最小值,所以递推公式中含Min,即dp[j]=min(d[[j],dp[j-coins[i]]+1),初始化都为INT_MAX,且dp[0] =0。由于不是求组合数,所以物品和背包重量的遍历先后顺序都是可以的。此处要注意一个细节,如果是物品for外循环,背包从coins[j]开始并且j++,(之......
  • 字符和字符串(2)(sizeof和strlen)
    1.初识sizeof与strlen函数    sizeof:准确的讲,sizeof不算一个函数,确切的说,它应该是一个运算符。sizeof使用的文件头文件就是#include<stdio.h>,sizeof运算符计算的是一个变量在计算机空间所占内存,当你使用sizeof函数计算一个变量空间的大小时,把这个变量放在si......
  • 代码随想录算法训练营第一天 | 704. 二分查找、27. 移除元素
    704.二分查找这个之前有写过,最重要的就是把握住要去搜索的区间的形式,包括左闭右闭以及左闭右开两种classSolution{publicintsearch(int[]nums,inttarget){intleft=0,right=nums.length;while(left<right){//左闭右开的版本,结果存储......
  • 力扣:151.反转字符串里的单词【2023年7月3日学习记录】
     方法一:双指针1.先使用trim()方法删除单词字符串前后空格字符。2.用两个指针指向字符串末尾单词(一个快指针,一个慢指针),快指针先向前移动,直到移动到空格字符停下来,然后截取从快指针到慢指针的单词到新开辟的字符串中。3.快指针再向前移动一位,同时将慢指针指向到快指针的位......