如果一个正整数的十进制表示(没有前导零)是一个回文字符串(一个前后读取相同的字符串),那么它就是回文。例如,数字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. 2018-2019-2 20165215《网络攻防技术》Exp6 信息搜集与漏洞扫描

    目录 实验目的 实验内容 基础知识 实验步骤 (一)各种搜索技巧的应用 Google Hacking 搜索网址目录结构 搜索特定类型的文件 路由侦查 (二)DNS IP注册信息的查询 whois域名注 ...

  2. 用pdf.js实现在移动端在线预览pdf文件

    用pdf.js实现在移动端在线预览pdf文件1.下载pdf.js    官网地址:https://mozilla.github.io/pdf.js/ 2.配置    下载下来的文件包,就是一个demo ...

  3. Referer图片防盗链

    前几天讲了<nginx下载防盗链>,今天继续说下图片防盗链. 他们两个使用的指令不同,前者使用secure link,并且需要程序配合,但是效果非常好;后者不需要程序配合,根据图片来源来实 ...

  4. 使用OGG添加唯一标识字段到目标表

    利用GoldenGate,可以获取到变更记录在源端对应的redo日志序号,redo中的地址RBA,如果源端是RAC,还可以拿到源端节点的编号,通过这3个值,可以定位该变更记录的唯一性. 这些信息,在G ...

  5. 外网访问内网SpringBoot

    外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...

  6. ios开发蓝图

  7. 基础JAVA程序设计(多个类与方法的实现2)

    设计一个类代表二维空间的一个点(Point),要求:两个成员变量:x坐标和y坐标. 设计一个类代表二维空间的一个圆(Circle),要求:两个成员变量:一个是圆心,一个是半径:提供计算圆面积的方法:提 ...

  8. Oracle基础体系浅析

    不论是开发.管理.优化还是设计,对Oracle的基本原理的了解都是必不可少的,于是对自己最近关于Oracle的学习作出一点点的总结. 庖丁解牛之所以能做到"合于桑林之舞,乃中经首之会&quo ...

  9. 2018年-2019年第二学期第七周C#学习个人总结

    在本周我又学习了,第五章面向对象高级中的5.5异常和5.6命名空间和程序集.在5.5异常中我知道了异常层次结构:所有的异常类都继承自Exception类.由于发生了异常程序立即终止无法再继续向下执行. ...

  10. ojdbc包加入本地仓库

    mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0 -Dpackaging=jar - ...