如果一个正整数的十进制表示(没有前导零)是一个回文字符串(一个前后读取相同的字符串),那么它就是回文。例如,数字5, 77, 363, 4884, 11111, 12121349943都是回文。
如果一个整数范围包含偶数个回文,那么它就是一个有趣的范围。范围 [L, R]L <= R的定义为从LR(包括):(L, L+1, L+2,……,R-1, R)的整数序列。LR是这个范围的第一个和最后一个数字。
如果L <=L1 <= R1 <=R1 > =R,那么范围[L1, R1]就是[L, R]的子集合。你的工作是确定有多少有趣的[L, R]子集。

 
  • 数据保证结果在int范围,不会溢出
您在真实的面试中是否遇到过这个题?  

样例

样例 1:

输入 : L = 1, R = 2
输出 : 1

样例 2:

输入 : L = 1, R = 7
输出 : 12

样例 3:

输入 : L = 87, R = 88
输出 : 1

我的解法:
class Solution:
"""
@param L: A positive integer
@param R: A positive integer
@return: the number of interesting subranges of [L,R]
"""
def PalindromicRanges(self, L, R):
# test
ans = 0
dp = [0]*(R-L+2)
for i in range(L, R+1):
if self.is_palindrom(str(i)):
dp[i-L+1] = dp[i-L]+1
else:
dp[i-L+1] = dp[i-L] for i in range(L, R+1):
for j in range(i, R+1):
if (dp[j-L+1]-dp[i-L]) % 2 == 0:
ans += 1
return ans def is_palindrom(self, s):
i, j = 0, len(s)-1
while i < j:
if s[i] != s[j]: return False
i += 1
j -= 1
return True

参考代码:

class Solution:
"""
@param L: A positive integer
@param R: A positive integer
@return: the number of interesting subranges of [L,R]
""" def PalindromicRanges(self, L, R):
# test
count = 0 len = R - L + 2
record = [0] * len
for offset in range(len-1):
record[offset+1] = record[offset]
if self.IsPalindromic(L + offset):
record[offset+1] += 1 for left in range(0, len-1):
for right in range(left+1, len):
temp = record[right] - record[left]
if temp % 2 == 0:
count += 1 return count def IsPalindromic(self, number):
str_ = str(number) start, end = 0, len(str_) - 1
while start < end:
if str_[start] == str_[end]:
start += 1
end -= 1
else: return False return True

值得学习的地方:L + offset的处理,比我写得优雅。

回文的范围——算法面试刷题2(for google),考察前缀和的更多相关文章

  1. 最长绝对文件路径——算法面试刷题1(google),字符串处理,使用tree遍历dfs类似思路

    假设我们通过以下的方式用字符串来抽象我们的文件系统: 字符串"dir\n\tsubdir1\n\tsubdir2\n\t\tfile.ext"代表了: dir subdir1 su ...

  2. 有效的括号序列——算法面试刷题4(for google),考察stack

    给定一个字符串所表示的括号序列,包含以下字符: '(', ')', '{', '}', '[' and ']', 判定是否是有效的括号序列. 括号必须依照 "()" 顺序表示, & ...

  3. 相似的RGB颜色——算法面试刷题3(for google),考察二分

    在本题中,每个大写字母代表从“0”到“f”的一些十六进制数字. 红绿蓝三元色#AABBCC可以简写为#ABC. 例如,#15c是颜色#1155cc的简写. 现在,假设两种颜色#ABCDEF和#UVWX ...

  4. 有效单词词广场——算法面试刷题5(for google),考察数学

    给定一个单词序列,检查它是否构成一个有效单词广场.一个有效的单词广场应满足以下条件:对于满足0≤k<max(numRows numColumns)的k,第k行和第k列对应的字符串应该相同,. 给 ...

  5. 安利一个基于Spring Cloud 的面试刷题系统。面试、毕设、项目经验一网打尽

    推荐: 接近100K star 的Java学习/面试指南 Github 95k+点赞的Java面试/学习手册.pdf 今天给小伙伴们推荐一个朋友开源的面试刷题系统. 这篇文章我会从系统架构设计层面详解 ...

  6. 九度OJ 1528 最长回文子串 -- Manacher算法

    题目地址:http://ac.jobdu.com/problem.php?pid=1528 题目描述: 回文串就是一个正读和反读都一样的字符串,比如"level"或者"n ...

  7. 数据结构+算法面试100题~~~摘自CSDN

    数据结构+算法面试100题~~~摘自CSDN,作者July 1.把二元查找树转变成排序的双向链表(树) 题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表.要求不能创建任何新的结点,只调 ...

  8. 回文O(N)算法

    [回文O(N)算法] 利用回文的对称性质,可以设计出O(N)的算法. 参考:http://blog.csdn.net/ggggiqnypgjg/article/details/6645824

  9. 算法笔记刷题1(codeup 1934)

    准备6月份的拼题甲级中(本来现在这两天就考试了,但是因为疫情的原因延期了) 刚刚开始按算法笔记刷题,今天是探索codeup的第一天. 一开始并没有把多点测试当回事,直到一错再错,心态爆炸... 附上我 ...

随机推荐

  1. 【转载】Sikuli安装及使用——基于图像识别自动化工具

    一.Sikuli能做什么? 用屏幕截图的方式,用截出来的图形元素组合出神奇的程序实现自动化安装.卸载软件,自动化测试(Windows.mac应用测试,Web测试,移动端测试) 二.安装Sikuli 预 ...

  2. maven打包并上传到nexus3私服

    之前搭了个maven私服,接下来则要充分利用这个私服的优势上传自己的jar包了. 我们先在nexus上创建一个用来上传jar包的角色,并通过此角色创建若干帐号用来给开发者上传包.如图是我自己的配置: ...

  3. Oarcle之单行函数(上)

    dual 是一个虚表,为了满足sql句式而设置这么一个表   单行函数 字符函数 concat 拼接两个字符串 select concat (concat(ename,‘的职位是’),job) fro ...

  4. 对于react中rredux的理解

    1.什么是redux? redux是一个应用数据流框架,主要作用是对于应用状态的管理 2.reducer特点 : (1)默认的state (2)state是只可读不可修改 (3)必须返回一个纯函数 3 ...

  5. Vue-Router路由 Vue-CLI脚手架和模块化开发 之 使用路由对象获取参数

    使用路由对象$route获取参数: 1.params: 参数获取:使用$route.params获取参数: 参数传递: URL传参:例 <route-linke to : "/food ...

  6. Extundelete 数据恢复

    Extundelete 数据恢复 “rm -rf /*” 是我们经常使用的命令,操作不慎全盘接蹦,从删库到跑路,身为过来人的我们都经历过rm带来的痛苦. 不要慌,当我们有了Extundelete就可以 ...

  7. Exp4 恶意代码分析 20164303 景圣

    Exp4 恶意代码分析 实验内容 实验点一:系统运行监控 (1)使用如计划任务,每隔一分钟记录自己的电脑有哪些程序在联网,连接的外部IP是哪里.运行一段时间并分析该文件,综述一下分析结果.目标就是找出 ...

  8. day06深浅拷贝,元组,字典,集合

    深浅拷贝 # 值拷贝:应用场景最多 ls = [1, 'abc', [10]] ls1 = ls # ls1直接将ls中存放的地址拿过来 # ls内部的值发生任何变化,ls1都会随之变化 ls2 = ...

  9. RocketMq 集群搭建 部署

    原文链接:https://blog.csdn.net/weixin_40533111/article/details/84451219 作者小太阳^_^,转载请注明出处,谢谢 前言本文基于最新版roc ...

  10. redhat7 配置使用centos的yum源

    新安装了redhat7.安装后,登录系统,使用yum update 更新系统.提示: This system is not registered to Red Hat Subscription Man ...