欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > LeetCode题(125,136,168)--《c++》

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

2025/2/7 8:57:48 来源:https://blog.csdn.net/2302_80329073/article/details/140607311  浏览:    关键词:LeetCode题(125,136,168)--《c++》

 125.验证回文串

//
// 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 的末尾。

回文判断

  • 定义了两个整数 i 和 j,分别初始化为字符串 a 的首尾索引。
  • 使用 while 循环进行回文检测,条件是 i 小于等于 j
  • 在循环中,如果 a[i] 不等于 a[j],则返回 false,表示不是回文。
  • 如果相等,则继续向中间移动 i 和 j

返回结果

  • 如果整个循环执行完毕,即 i > j,则返回 true,表示字符串 s 是回文。

功能和注意事项

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

136.只出现一次的数字

//
// 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表名称

//
// 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列索引正确转换。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com