资讯详情

cpp算法题目整理——双指针篇

📅 2026/10/31 2:02:55 | 华诺云谱 👁 阅读
cpp算法题目整理——双指针篇
反转字符串中的字符题目描述实现一个算法来实现反转字符数组的功能。反转的要求如下将字符数组的字符进行反转例如 [b, , a, r] 变成 [r, a, , b]。将字符数组替换为反转后的数组。解题思路这个题是典型的双指针只需要定义左右两个指针然后将两个指针对应的字符交换位置然后继续向中间遍历即可。#include iostream #include string using namespace std; int main(){ string s; cin s; //定义左指针和右指针 int l 0; int r s.size() - 1; //当左右指针未重合时 while(l r){ //定义一个temp中间变量用来暂时存储需要交换位置的字符 char temp s[l]; s[l] s[r]; s[r] temp; //两个指针同时向中间移动 l; r--; } //遍历s输出 //这里的意思是遍历s 将s中的每个字符赋值给a并输出 for(char a : s){ cout a; } return 0; }回文判定题目描述给定一个长度为 n 的字符串 S。请你判断字符串 S 是否回文。解题思路也是标准双指针模板题只需要定义一个双指针额外需要一个flag来判断字符串是否回文。#include iostream #include string #include vector using namespace std; int main() { //定义字符串s接收输入 string s; cin s; //定义左右双指针 int left 0; int right s.size() - 1; //定义一个bool类型 用来判断前后字符是否相等 bool flag true; while(left right){ //对前后两个字符判断 如果不相等 //flag置false 这个时候可以直接结束循环 if(s[left] ! s[right]){ flag false; break; } //如果满足上方条件 左右指针向中间移动 left; right--; } //对flag判断 为true说明是回文 if(flag){ cout Y endl; } else{ cout N endl; } return 0; }
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑