Panama

【LeetCode】22 验证回文串

孤街浪徒 提交于 2020-11-20 08:42:41
题目 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 说明 :本题中,我们将空字符串定义为有效的回文串。 示例 1: 输入: "A man, a plan, a canal: Panama" 输出: true 示例 2: 输入: "race a car" 输出: false 思路 就是记住几个常用的内置方法 String的toLowerCase() 字符串转为小写 String的toCharArray() 字符串变换成字符的序列转换。它返回一个新分配的字符数组。返回的数组长度等于字符串的长度 StringBuild的append() 追加字符 StringBuild的reverse() 字符串翻转 Character.isLetterOrDigit 是在Java一个内置的方法,该方法确定是否指定的字符是字母或数字。 代码 import java.util.*; public class Solution { public boolean isPalindrome(String s) { String str = s.toLowerCase(); StringBuilder sb = new StringBuilder(); for(char c : str.toCharArray()){ if(Character.isLetterOrDigit(c

验证回文字符串(leetcode)

喜欢而已 提交于 2020-11-02 13:32:47
题目描述如下: 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 说明: 本题中,我们将空字符串定义为有效的回文串。 示例 1: 输入: "A man, a plan, a canal: Panama" 输出: true 示例 2: 输入: "race a car" 输出: false c++代码如下: class Solution { public: bool isPalindrome(string s) { int left = 0, right = s.size(); while (left < right) { if (!isAlphaNum(s[left])) ++left; else if (!isAlphaNum(s[right])) --right; else if ((s[left] + 32 - 'a') %32 != (s[right] + 32 - 'a') % 32) return false; else { ++left; --right; } } return true; } inline bool isAlphaNum(char &ch) { if (ch >= 'a' && ch <= 'z') return true; if (ch >= 'A' && ch <= 'Z') return true; if (ch

Leetcode每日一题125. 验证回文串

前提是你 提交于 2020-10-15 00:48:47
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 说明:本题中,我们将空字符串定义为有效的回文串。 示例 1: 输入: "A man, a plan, a canal: Panama" 输出: true 示例 2: 输入: "race a car" 输出: false 在普通回文串的基础上做特殊出理 class Solution { public boolean isPalindrome(String s) { int left = 0, right = s.length()-1; while(left<right){ while(left<right && !Character.isLetterOrDigit(s.charAt(left))) left++; while(left<right && !Character.isLetterOrDigit(s.charAt(right))) right--; if (left<right && Character.toLowerCase(s.charAt(left)) != Character.toLowerCase(s.charAt(right))) { return false; } left++; right--; } return true; } } 来源: oschina 链接: https:

leetcode125(验证回文串)--Java语言实现

北慕城南 提交于 2020-08-17 09:42:16
求: 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 说明:本题中,我们将空字符串定义为有效的回文串。 示例 1: 输入: "A man, a plan, a canal: Panama" 输出: true 示例 2: 输入: "race a car" 输出: false 题目链接: https://leetcode-cn.com/problems/valid-palindrome/ 解: 1、双指针 使用双指针,i指针指向字符串开头,j指针指向字符串结尾,如果遇到非字母或者数字字符则跳过。遍历过程中统一转化为小写处理,如果遍历字符串发现i,j指向的字符不相等,返回false。整个遍历过程中都没有出现不相等,返回true。 时间复杂度:O(N) 空间复杂度:O(1) public boolean isPalindrome (String s) { int i = 0 , j = s.length() - 1 ; while (i < j) { while (i < j && !Character. isLetterOrDigit (s.charAt(i))) ++i ; while (i < j && !Character. isLetterOrDigit (s.charAt(j))) --j ; if (i < j) { if

125验证回文串

て烟熏妆下的殇ゞ 提交于 2020-08-13 07:03:26
# 利用双指针,一次遍历,求出结果 class Solution: def isPalindrome(self, s: str) -> bool: # 定义变量,接收字符串的长度 length = len(s) # 长度小于等于1直接返回真 if length <= 1:return True # 定义两个指针, 分别指向字符串头和尾 index1,index2 = 0,length - 1 while index1 <= index2: # 判断字符是否为字母或者数字 if not s[index1].isalnum(): index1 += 1 continue if not s[index2].isalnum(): index2 -= 1 continue # 判断两个字符是否相同 if s[index1].lower() != s[index2].lower(): return False index1 += 1 index2 -= 1 return True A = Solution() print(A.isPalindrome("A man, a plan, a canal: Panama")) print(A.isPalindrome("")) print(A.isPalindrome("qq")) print(A.isPalindrome("race a car")

pyecharts(echarts) 世界地图——国家名称表中英文的映射

那年仲夏 提交于 2020-07-27 22:12:37
今天在爬一个网站的时候,各个国家的名称是中文的,但要使用pyecharts.map绘图时要输入的国家名称却是英文的。 这时就需要一个字典来实现中英文名称的映射关系: nameMap = { ' Singapore Rep. ' : ' 新加坡 ' , ' Dominican Rep. ' : ' 多米尼加 ' , ' Palestine ' : ' 巴勒斯坦 ' , ' Bahamas ' : ' 巴哈马 ' , ' Timor-Leste ' : ' 东帝汶 ' , ' Afghanistan ' : ' 阿富汗 ' , ' Guinea-Bissau ' : ' 几内亚比绍 ' , " Côte d'Ivoire " : ' 科特迪瓦 ' , ' Siachen Glacier ' : ' 锡亚琴冰川 ' , " Br. Indian Ocean Ter. " : ' 英属印度洋领土 ' , ' Angola ' : ' 安哥拉 ' , ' Albania ' : ' 阿尔巴尼亚 ' , ' United Arab Emirates ' : ' 阿联酋 ' , ' Argentina ' : ' 阿根廷 ' , ' Armenia ' : ' 亚美尼亚 ' , ' French Southern and Antarctic Lands ' : ' 法属南半球和南极领地 ' ,

五年过去了,再看 Java 缺失的特性

假如想象 提交于 2020-04-23 07:22:36
本文要点: 在过去的五年中,Java 语言发生了显著的变化 正在实现这一变化的有两个主要的项目:Valhalla 和 Amber,它们仍在进行中 Java 继续保持其向后兼容的核心价值 尽管已经 25 岁了,但 Java 在语言和平台上仍然具有很强的生命力 诸如 Graal 之类的新技术正在帮助 Java 继续保持在编程语言的前沿上 大约是五年前,我写了一篇 文章 ,概述了其他语言的一些特性思想,我认为这些思想可能会对 Java 有好处。从那以后发生了很多事情:那时,Java 8 是最新的发布版本,而现在,最新的版本是 Java 14。 让我们依次查看下每个特性,看看它的当前状态是什么:它是已经被添加到 Java 中了,还是正在开发中,亦或是当前尚没有将其纳入 Java 的计划。 具体化泛型 我最初的预测排除了具体化泛型(reified generics)。我没有预见到 Valhalla 项目对从头开始重构 JVM 的雄心壮志。 Valhalla 项目的主要目标是: 使 JVM 内存布局行为与现代硬件的成本模型保持一致; 扩展泛型,以允许对所有类型(包括原语、值、甚至 void)进行抽象;以及 使现有的库(尤其是 JDK)能够兼容地演变,以充分利用这些特性。 在此描述中隐藏的是已加载的单词“values”,它已经演变成我们今天称之为内联类的特性。 因此

125. 验证回文串

蓝咒 提交于 2020-04-12 11:43:24
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 说明:本题中,我们将空字符串定义为有效的回文串。 示例 1: 输入: "A man, a plan, a canal: Panama" 输出: true 示例 2: 输入: "race a car" 输出: false 思路:双指针。 1 class Solution(object): 2 def isPalindrome(self, s): 3 """ 4 :type s: str 5 :rtype: bool 6 """ 7 if s == "" : 8 return True 9 begin, end = 0, len(s) - 1 10 while begin < end: 11 if not s[begin].isalnum(): 12 begin += 1 13 continue 14 elif not s[end].isalnum(): 15 end -= 1 16 continue 17 elif s[begin].lower() != s[end].lower(): 18 return False 19 begin += 1 20 end -= 1 21 return True 22 23 def isPalindrome2(self, s): 24 """ 25 :type s:

算法-验证回文串(php&golang)

点点圈 提交于 2020-03-11 18:46:38
PHP //给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写 function isPalindrome($s) { $s = preg_replace('/[^0-9a-z]+/i', '', strtolower($s)); $arr = str_split($s); //切割为数组 $cnt = count($arr); for ($i=0; $i < $cnt/2; $i++) { //思路:主要判断 第一个与最后一个对比 第二个与倒数第二个对比 一次类推 if (!($arr[$i] == $arr[$cnt-$i-1])) { return false; break; } } return true; } //第二种 function isPalindrome($s) { $arr = preg_replace('/[^0-9a-z]+/i', '', strtolower($s)); $i = 0; $j = strlen($arr) - 1; while ($i < $j) { if ($arr[$i] != $arr[$j]) return false; $i++; $j--; } return true; } $str = 'abccba'; // $str = 'A man, a plan, a casnal: Panama';

区块链100讲:盘点那些常用的加密算法原理

我是研究僧i 提交于 2019-12-02 07:28:10
在开发过程中,常常用到各种加密方法和算法,本文总结了几种常用加密方法的原理。 1 对称加密 原理 :加密和解密数据使用同一个密钥,适合对大量数据进行加解密 安全性 :关键是密钥的保存方式,加密或是解密的任何一方泄漏密钥,都会导致信息泄漏 代表算法 :DES、3DES、Blowfish、IDEA、RC4、RC5、RC6、AES等 对称密码常用的数学运算: **移位和循环移位 ** 移位就是将一段数码按照规定的位数整体性地左移或右移。循环右移就是当右移时,把数码的最后的位移到数码的最前头,循环左移正相反。例如,对十进制数码12345678循环右移1位(十进制位)的结果为81234567,而循环左移1位的结果则为23456781。 **置换 ** 就是将数码中的某一位的值根据置换表的规定,用另一位代替。它不像移位操作那样整齐有序,看上去杂乱无章。这正是加密所需,被经常应用。 **扩展 ** 就是将一段数码扩展成比原来位数更长的数码。扩展方法有多种,例如,可以用置换的方法,以扩展置换表来规定扩展后的数码每一位的替代值。 **压缩 ** 就是将一段数码压缩成比原来位数更短的数码。压缩方法有多种,例如,也可以用置换的方法,以表来规定压缩后的数码每一位的替代值。 **异或 ** 这是一种二进制布尔代数运算。异或的数学符号为⊕ ,它的运算法则如下: 1⊕1 = 0 0⊕0 = 0 1⊕0 = 1