首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >LeetCode题(125,136,168)--《c++》

LeetCode题(125,136,168)--《c++》

作者头像
@VON
发布2025-12-17 10:46:05
发布2025-12-17 10:46:05
60
举报

125.验证回文串

代码语言:javascript
复制
//
// Created by wxj05 on 2024/7/22.
//
class Solution {
public:
    bool isPalindrome(string s) {
        string a;
        for(int i=0;i<s.size();i++){
            if(isalnum(s[i])){
                a+=tolower(s[i]);
            }
        }
        int i=0,j=a.size()-1;
        while(i<=j){
            if(a[i]!=a[j]){
                return false;
            }
            i++;
            j--;
        }
        return true;
    }
};
局部变量和字符串处理
  • string a; 定义了一个空字符串 a,用于存储处理后的字符串。
  • for 循环遍历输入的字符串 s,通过 isalnum(s[i]) 判断字符是否为字母或数字,如果是则将其转换为小写并追加到字符串 a 的末尾。
回文判断
  • 定义了两个整数 ij,分别初始化为字符串 a 的首尾索引。
  • 使用 while 循环进行回文检测,条件是 i 小于等于 j
  • 在循环中,如果 a[i] 不等于 a[j],则返回 false,表示不是回文。
  • 如果相等,则继续向中间移动 ij
返回结果
  • 如果整个循环执行完毕,即 i > j,则返回 true,表示字符串 s 是回文。
功能和注意事项

  • 该函数首先将输入字符串转换为只包含小写字母和数字的字符串,忽略了非字母和数字的字符。
  • 然后使用双指针法进行回文检测,确保首尾字符依次相等。
  • 考虑了字符串的大小写问题,通过 tolower() 函数将字符转换为小写进行比较。
  • 整体实现简洁高效,逻辑清晰,能有效地判断大部分情况下的回文字符串。

136.只出现一次的数字

代码语言:javascript
复制
//
// Created by wxj05 on 2024/7/22.
//
class Solution {
public:
    int singleNumber(vector<int>& nums) {
        for(int i=0;i<nums.size();i++){
            int a = count(nums.begin(),nums.end(),nums[i]);
            if(a==1) return nums[i];
        }
        return 0;
    }
};
局部变量和循环
  • for 循环遍历整数数组 nums
  • 在循环中,使用 count() 函数计算数组中当前元素 nums[i] 的出现次数,并将结果赋给变量 a
  • 如果 a 等于 1,表示当前元素 nums[i] 只出现了一次,那么就返回这个元素 nums[i]
返回结果
  • 如果循环结束后仍未找到只出现一次的元素,则返回 0。
功能和注意事项

  • 这段代码的实现思路是通过遍历数组和计数操作来寻找只出现一次的元素。
  • 使用了 count() 函数来统计数组中特定元素的出现次数,然后根据计数结果进行判断。
  • 返回的是第一个发现的只出现一次的元素,因此假设数组中有且仅有一个元素是单独出现的,否则返回的结果可能不符合预期。
  • 时间复杂度较高,为 O(n^2),因为在每次迭代中都调用了 count() 函数,这会导致多次遍历数组。

168.Excel表名称

代码语言:javascript
复制
//
// Created by wxj05 on 2024/7/22.
//
class Solution {
public:
    string convertToTitle(int columnNumber) {
        vector<string>arr={"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
        string zm="";
        int count;
        while(columnNumber>0){
            columnNumber--;
            count=(columnNumber%26);
            zm+=arr[count];
            columnNumber/=26;
        }
        reverse(zm.begin(),zm.end());
        return zm;
    }
};
变量和循环
  • arr 是一个包含26个大写字母的字符串向量,用于表示Excel表格的列标题。
  • zm 是一个空字符串,用于存储转换后的列标题。
  • count 是一个整数变量,用于临时存储每次取模后的结果。
转换过程
  • while 循环中,首先将 columnNumber 减去 1,然后取 columnNumber 对 26 取模,得到的结果是当前位上的字母在 arr 中的索引。
  • 将对应的字母添加到 zm 字符串末尾。
  • columnNumber 除以 26,继续处理下一位。
  • 循环直到 columnNumber 不大于 0。
翻转字符串
  • 最后通过 reverse() 函数将 zm 字符串反转,确保得到正确的Excel表格列标题顺序。
返回结果
  • 返回存储在 zm 中的最终结果,即转换后的Excel表格列标题。
功能和注意事项

  • 这段代码实现了将整数 columnNumber 转换为相应Excel表格列标题的功能,遵循Excel列标题的表示规则。
  • 通过不断取模和除法操作,将整数转换为对应的字母序列。
  • 注意在处理 columnNumber 时,每次循环前先将其减去 1,是为了确保从 1 开始的Excel列索引正确转换。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-12-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 局部变量和字符串处理:
  • 回文判断:
  • 返回结果:
  • 功能和注意事项
  • 局部变量和循环:
  • 返回结果:
  • 功能和注意事项
  • 变量和循环:
  • 转换过程:
  • 翻转字符串:
  • 返回结果:
  • 功能和注意事项
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档