首页 > 编程语言 >代码随想录算法训练营|Day07 LeetCode 344.反转字符串 ,541.反转字符串||,卡玛网54.替换数字

代码随想录算法训练营|Day07 LeetCode 344.反转字符串 ,541.反转字符串||,卡玛网54.替换数字

时间:2024-09-04 22:24:45浏览次数:4  
标签:344 string int 反转 随想录 lens 字符串

344.反转字符串

344. 反转字符串 - 力扣(LeetCode)

class Solution {
public:
    void reverseString(vector<char>& s) {
 int lens = s.size();
        int right, left;
        if (lens % 2 != 0)//奇数个
        {
            right = lens / 2 +1;
            left = lens / 2 - 1;
        }
        else//偶数个
        {
            right = lens / 2;
            left = lens / 2 - 1;
        }
        int i = 0, j = lens - 1;
        while (i<=left&&j<=lens-1)
        {
            char temp = s[i];
            s[i] = s[j];
            s[j] = temp;
            i++;
            j--;
        }
    }
};

541.反转字符串||

541. 反转字符串 II - 力扣(LeetCode)

class Solution {
public:
    string reverseStr(string s, int k) {
        int len = s.size();
        for (int i =0; i < len; i += 2 * k)
        {
            if (i + k <= s.size())
            {
                reverse(s.begin() + i, s.begin() + i + k);
            }
            else
            {
                reverse(s.begin() + i, s.end());
            }
       }
        return s;
    }
};

卡玛网54.替换数字

54. 替换数字(第八期模拟笔试) (kamacoder.com)### 额外的数组空间

#include<iostream>
#include<string>
using namespace std;

int main()
{
	 string result = "";
	string s;
	cin >> s;
	for (int i = 0; i < s.length(); i++)
	{
		if (s[i] >= 'a' && s[i] <= 'z')
		{
			result += s[i];
		}
		else
		{
			result += "number";
		}
	}
	cout << result;
}

双指针(不借用额外的数组空间)

#include<iostream>
#include<string>
using namespace std;

int main()
{

	string s;
	cin >> s;
	int count = 0;
	int OldIndex = s.size() - 1;
	for (int i = 0; i < s.length(); i++)
	{
		if (s[i] >= '0' && s[i] <= '9')
		{
			count++;
		}
	}
	s.resize(s.size() + count*5);
	int NewIndex = s.size() - 1;//已扩容的下标
	while (OldIndex >= 0)
	{
		if (s[OldIndex] >= '0' && s[OldIndex] <= '9')
		{

			s[NewIndex] = 'r';
			NewIndex--;
			s[NewIndex--] = 'e';
			s[NewIndex--] = 'b';
			s[NewIndex--] = 'm';
			s[NewIndex--] = 'u';
			s[NewIndex--] = 'n';
		}
		else
		{
			s[NewIndex] = s[OldIndex];
			NewIndex--;
		}
		OldIndex--;
	}
	cout << s;
}

标签:344,string,int,反转,随想录,lens,字符串
From: https://www.cnblogs.com/FreeDrama/p/18397453

相关文章

  • 代码随想录训练营 Day50打卡 图论part01 理论基础 98. 所有可达路径
    代码随想录训练营Day50打卡图论part01一、理论基础DFS(深度优先搜索)和BFS(广度优先搜索)在图搜索中的核心区别主要体现在搜索策略上:1、搜索方向:DFS:深度优先,一条路走到黑。DFS从起点开始,选择一个方向深入到底,遇到死胡同再回溯,换一个方向继续探索。这种方式适合解决路径......
  • 关于Java链表的一些操作以及力扣原题刷刷刷——反转链表、删除链表的倒数第N个节点
    1、反转链表1.1环境准备,可以自己先尝试实现/***@AuthorMiku*@Date2024/09/0209:54*@DescriptionTODO*@Version1.0*/publicclassSolution{staticclassListNode{intval;ListNodenext;ListNode(intval){......
  • 20240904:字符串选做
    P4555[国家集训队]最长双回文串题意:给定字符串\(s\),找到他最长双回文串\(t\)的长度。双回文串定义为存在一个\(i>1\)使得\(t[1,i)\)和\(t[i,n]\)都是回文串。\(\verts\vert\le10^5\)。二分哈希求出所有回文中心的半径,设以\(i\)为中心的最长回文串为\([l_i,......
  • 日志打印的时候使用占位符而不是用字符串拼接
    日志打印的时候使用占位符而不是用字符串拼接1.logger.info("错误信息:"+e.getMessage());  //字符串拼接2.logger.info("错误信息:{}"+e.getMessage()); //使用占位符(正确使用方式)因为String字符串的拼接会使用StringBuilder的append()方式,有一定的性能损耗。......
  • 给自己复盘的随想录笔记-字符串练习题
    反转字符串344.反转字符串-力扣(LeetCode)双指针+元素交换 classSolution{publicvoidreverseString(char[]s){chartemp;intl=0,r=s.length-1;while(l<r){temp=s[l];s[l]=s[r];s[r]=temp;l++;......
  • CF 2010 C2. Message Transmission Error (hard version) (*1700) 字符串+哈希
    CF2010C2.MessageTransmissionError(hardversion)(*1700)字符串+哈希题目链接题意:给你一个字符串,让你判断是否是由某个字符串首尾拼接重叠而成的。思路:做法很多,最暴力就直接枚举字符串长度,然后哈希即可。代码:#include<bits/stdc++.h>usingnamespacestd;#def......
  • 代码随想录day50 || 图论基础
    图论基础定义图的构造方式1,邻接矩阵矩阵位置array[i][j]=k,i表示节点i,j表示节点j,[i][j]表示i-->j存在一条边,k表示的是边的权重邻接矩阵的优点:表达方式简单,易于理解检查任意两个顶点间是否存在边的操作非常快适合稠密图,在边数接近顶点数平方的图中,邻接矩阵是一种空......
  • 代码随想录 刷题记录-26 图论 (3)最小生成树
    一、prim算法精讲53.寻宝解题思路最小生成树是所有节点的最小连通子图,即:以最小的成本(边的权值)将图中所有节点链接到一起。图中有n个节点,那么一定可以用n-1条边将所有节点连接到一起。那么如何选择这n-1条边就是最小生成树算法的任务所在。例如本题示例中的无......
  • 代码随想录算法day7 - 字符串1
    题目1344.反转字符串编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组s的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用O(1)的额外空间解决这一问题。示例1:输入:s=["h","e","l","l","o"]输出:["o","l","l","e",&qu......
  • 字符串行转列 regexp_split_to_table
    在Greenplum数据库中,regexp_split_to_table是一个非常有用的函数,它允许你根据正则表达式将字符串分割成多个部分,并将这些部分作为表中的行返回。这个函数在处理文本数据时特别有用,尤其是当你需要将一个字段中的复合数据分解为独立的元素时。语法regexp_split_to_table(str......