回文的范围——算法面试刷题2(for google),考察前缀和
如果一个正整数的十进制表示(没有前导零)是一个回文字符串(一个前后读取相同的字符串),那么它就是回文。例如,数字5, 77, 363, 4884, 11111, 12121和349943都是回文。
如果一个整数范围包含偶数个回文,那么它就是一个有趣的范围。范围 [L, R]且L <= R的定义为从L到R(包括):(L, L+1, L+2,……,R-1, R)的整数序列。L和R是这个范围的第一个和最后一个数字。
如果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(google),字符串处理,使用tree遍历dfs类似思路
假设我们通过以下的方式用字符串来抽象我们的文件系统: 字符串"dir\n\tsubdir1\n\tsubdir2\n\t\tfile.ext"代表了: dir subdir1 su ...
- 有效的括号序列——算法面试刷题4(for google),考察stack
给定一个字符串所表示的括号序列,包含以下字符: '(', ')', '{', '}', '[' and ']', 判定是否是有效的括号序列. 括号必须依照 "()" 顺序表示, & ...
- 相似的RGB颜色——算法面试刷题3(for google),考察二分
在本题中,每个大写字母代表从“0”到“f”的一些十六进制数字. 红绿蓝三元色#AABBCC可以简写为#ABC. 例如,#15c是颜色#1155cc的简写. 现在,假设两种颜色#ABCDEF和#UVWX ...
- 有效单词词广场——算法面试刷题5(for google),考察数学
给定一个单词序列,检查它是否构成一个有效单词广场.一个有效的单词广场应满足以下条件:对于满足0≤k<max(numRows numColumns)的k,第k行和第k列对应的字符串应该相同,. 给 ...
- 安利一个基于Spring Cloud 的面试刷题系统。面试、毕设、项目经验一网打尽
推荐: 接近100K star 的Java学习/面试指南 Github 95k+点赞的Java面试/学习手册.pdf 今天给小伙伴们推荐一个朋友开源的面试刷题系统. 这篇文章我会从系统架构设计层面详解 ...
- 九度OJ 1528 最长回文子串 -- Manacher算法
题目地址:http://ac.jobdu.com/problem.php?pid=1528 题目描述: 回文串就是一个正读和反读都一样的字符串,比如"level"或者"n ...
- 数据结构+算法面试100题~~~摘自CSDN
数据结构+算法面试100题~~~摘自CSDN,作者July 1.把二元查找树转变成排序的双向链表(树) 题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表.要求不能创建任何新的结点,只调 ...
- 回文O(N)算法
[回文O(N)算法] 利用回文的对称性质,可以设计出O(N)的算法. 参考:http://blog.csdn.net/ggggiqnypgjg/article/details/6645824
- 算法笔记刷题1(codeup 1934)
准备6月份的拼题甲级中(本来现在这两天就考试了,但是因为疫情的原因延期了) 刚刚开始按算法笔记刷题,今天是探索codeup的第一天. 一开始并没有把多点测试当回事,直到一错再错,心态爆炸... 附上我 ...
随机推荐
- 2018-2019-2 20165215《网络攻防技术》Exp6 信息搜集与漏洞扫描
目录 实验目的 实验内容 基础知识 实验步骤 (一)各种搜索技巧的应用 Google Hacking 搜索网址目录结构 搜索特定类型的文件 路由侦查 (二)DNS IP注册信息的查询 whois域名注 ...
- 用pdf.js实现在移动端在线预览pdf文件
用pdf.js实现在移动端在线预览pdf文件1.下载pdf.js 官网地址:https://mozilla.github.io/pdf.js/ 2.配置 下载下来的文件包,就是一个demo ...
- Referer图片防盗链
前几天讲了<nginx下载防盗链>,今天继续说下图片防盗链. 他们两个使用的指令不同,前者使用secure link,并且需要程序配合,但是效果非常好;后者不需要程序配合,根据图片来源来实 ...
- 使用OGG添加唯一标识字段到目标表
利用GoldenGate,可以获取到变更记录在源端对应的redo日志序号,redo中的地址RBA,如果源端是RAC,还可以拿到源端节点的编号,通过这3个值,可以定位该变更记录的唯一性. 这些信息,在G ...
- 外网访问内网SpringBoot
外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...
- ios开发蓝图
- 基础JAVA程序设计(多个类与方法的实现2)
设计一个类代表二维空间的一个点(Point),要求:两个成员变量:x坐标和y坐标. 设计一个类代表二维空间的一个圆(Circle),要求:两个成员变量:一个是圆心,一个是半径:提供计算圆面积的方法:提 ...
- Oracle基础体系浅析
不论是开发.管理.优化还是设计,对Oracle的基本原理的了解都是必不可少的,于是对自己最近关于Oracle的学习作出一点点的总结. 庖丁解牛之所以能做到"合于桑林之舞,乃中经首之会&quo ...
- 2018年-2019年第二学期第七周C#学习个人总结
在本周我又学习了,第五章面向对象高级中的5.5异常和5.6命名空间和程序集.在5.5异常中我知道了异常层次结构:所有的异常类都继承自Exception类.由于发生了异常程序立即终止无法再继续向下执行. ...
- ojdbc包加入本地仓库
mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0 -Dpackaging=jar - ...