LCP9回文数[leetcode-9-easy]

2024-08-21 14:04
文章标签 leetcode 回文 easy lcp9

本文主要是介绍LCP9回文数[leetcode-9-easy],希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

LCP,9回文数

给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false

回文数

是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

  • 例如,121 是回文,而 123 不是。

回文可谓大学半桶水教育的常见题目,过去我也写过不少,但是怎么写的又快又好,是个问题
今天用升了级的方法论:双指针来写写

class Solution {
public:bool isPalindrome(int x) {//给算法加速:显然负数不是回文数if (x < 0) return false;/*其实分析可见更多边界条件:负数和以0结尾的数字(除了0本身)不是回文数if (x < 0 || (x % 10 == 0 && x != 0)) return false;但是,过长的边界往往会拖慢程序运行的速度这个语句的运行效率甚至不如简单的负数判断因为条件机构不符合CPU的流水线机构,会拖慢程序运行的速度(顺序和循环则不是)所以条件应尽可能简明,复杂边界往往适得其反*///对于字符串类的问题,或者可以转化为字符串的问题,to_string简直太好用string s = to_string(x);int l = 0;int r = s.length() - 1;//基数转换bool deleted = false; // 使用这个标记来记录是否使用了删除权限while (l <= r) {//如果有奇长度,则最后两个指针重合if (l == r)return true;//如果有偶数长度,则最后两个指针相邻if (s[l] == s[r]) {//保证指向的值相同if (l + 1 == r) return true;++l;--r;}//注意不相等直接退出else return false;}return false;}
};

看看效果

可惜,不是100% ,不过这也可见双指针的威力之大。我23年其实写过这题一遍,当时傻乎乎的,用的vector存每位数字上的值,存完再对比,足足花了28ms,

在这里插入图片描述

这篇关于LCP9回文数[leetcode-9-easy]的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1093362

相关文章

哈希leetcode-1

目录 1前言 2.例题  2.1两数之和 2.2判断是否互为字符重排 2.3存在重复元素1 2.4存在重复元素2 2.5字母异位词分组 1前言 哈希表主要是适合于快速查找某个元素(O(1)) 当我们要频繁的查找某个元素,第一哈希表O(1),第二,二分O(log n) 一般可以分为语言自带的容器哈希和用数组模拟的简易哈希。 最简单的比如数组模拟字符存储,只要开26个c

csu1328(近似回文串)

题意:求近似回文串的最大长度,串长度为1000。 解题思路:以某点为中心,向左右两边扩展,注意奇偶分开讨论,暴力解即可。时间复杂度O(n^2); 代码如下: #include<iostream>#include<algorithm>#include<stdio.h>#include<math.h>#include<cstring>#include<string>#inclu

poj 3974 and hdu 3068 最长回文串的O(n)解法(Manacher算法)

求一段字符串中的最长回文串。 因为数据量比较大,用原来的O(n^2)会爆。 小白上的O(n^2)解法代码:TLE啦~ #include<stdio.h>#include<string.h>const int Maxn = 1000000;char s[Maxn];int main(){char e[] = {"END"};while(scanf("%s", s) != EO

leetcode-24Swap Nodes in Pairs

带头结点。 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) { val = x; }* }*/public class Solution {public ListNode swapPairs(L

leetcode-23Merge k Sorted Lists

带头结点。 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode(int x) { val = x; }* }*/public class Solution {public ListNode mergeKLists

C++ | Leetcode C++题解之第393题UTF-8编码验证

题目: 题解: class Solution {public:static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num &

【每日一题】LeetCode 2181.合并零之间的节点(链表、模拟)

【每日一题】LeetCode 2181.合并零之间的节点(链表、模拟) 题目描述 给定一个链表,链表中的每个节点代表一个整数。链表中的整数由 0 分隔开,表示不同的区间。链表的开始和结束节点的值都为 0。任务是将每两个相邻的 0 之间的所有节点合并成一个节点,新节点的值为原区间内所有节点值的和。合并后,需要移除所有的 0,并返回修改后的链表头节点。 思路分析 初始化:创建一个虚拟头节点

C语言 | Leetcode C语言题解之第393题UTF-8编码验证

题目: 题解: static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num & MASK1) == 0) {return

【JavaScript】LeetCode:16-20

文章目录 16 无重复字符的最长字串17 找到字符串中所有字母异位词18 和为K的子数组19 滑动窗口最大值20 最小覆盖字串 16 无重复字符的最长字串 滑动窗口 + 哈希表这里用哈希集合Set()实现。左指针i,右指针j,从头遍历数组,若j指针指向的元素不在set中,则加入该元素,否则更新结果res,删除集合中i指针指向的元素,进入下一轮循环。 /*** @param

LeetCode:64. 最大正方形 动态规划 时间复杂度O(nm)

64. 最大正方形 题目链接 题目描述 给定一个由 0 和 1 组成的二维矩阵,找出只包含 1 的最大正方形,并返回其面积。 示例1: 输入: 1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0输出: 4 示例2: 输入: 0 1 1 0 01 1 1 1 11 1 1 1 11 1 1 1 1输出: 9 解题思路 这道题的思路是使用动态规划