算法——回文(palindrome)
回文(palindrome):指的是从头读到尾与从尾读到头一模一样的字符串。
分别在C、Java与Python实现回文检测:
C:
#include <stdio.h>
#include <stdbool.h>
#include <ctype.h> #define MAX_LEN 255 int main(int argc, char *args[]){
char message[MAX_LEN];
char str[MAX_LEN];
char ch;
int index = ; printf("Please enter a message: ");
while((ch = getchar()) != '\n'){
if(index==MAX_LEN){
while(getchar() != '\n'){
continue;
}
break;
}else{
message[index++] = ch;
}
} int j = ;
for(int i = ; i < index; i++){
ch = message[i];
if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')){
str[j++] = tolower(ch);
}
} for(int i = ; i < j / ; i++){
if(str[i] != str[j-i-]){
puts("Not a Palindrome!");
return ;
}
}
puts("Palindrome!"); return ;
}
Java:
import java.util.Scanner;
public class Palindrome{
public static boolean isPalindrome(String raw){
String str = "";
// 只拿raw字符串里的字母,拼接到str里
for(int i = 0; i < raw.length(); i++){
char ch = raw.charAt(i);
if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')){
str += ch;
}
}
// str字母全部小写化
str = str.toLowerCase();
// 判断是否为回文
int end = str.length();
for(int i = 0; i < end/2; i++){
if(str.charAt(i) != str.charAt(end-i-1)){
return false;
}
}
return true;
}
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
// I prefer pi!
// A man, a plan, a canal: Panama!
// Madam, I am Adam.
System.out.printf("Enter a message: ");
String str = scanner.nextLine();
if(isPalindrome(str)){
System.out.println("Palindrome!");
}else{
System.out.println("Not a palindrome!");
}
}
}
Python:
import string def is_palindrome(text: str) -> bool:
'是否为回文'
# 1、先去除标点符号以及空格,并将所有字母小写化
result = ''
for i in range(len(text)):
if not text[i] in string.punctuation + ' ':
result += text[i].lower()
print(result) # 2、判断是否为回文
n = len(result)
for i in range(len(result) // 2):
if result[i] != result[n-i-1]:
return False
return True if __name__ == '__main__':
print(is_palindrome('I prefer pi.'))
print(is_palindrome('A man, a plan, a canal: Panama.'))
print(is_palindrome('Resistance is futile!'))
算法——回文(palindrome)的更多相关文章
- 【Python】回文palindrome——利用字符串反转
回文 palindrome Python 字符串反转string[::-1] Slice notation "[a : b : c]" means "count in i ...
- manacher算法——回文串计算的高效算法
manacher算法的由来不再赘述,自行百度QWQ... 进入正题,manacher算法是一个高效的计算回文串的算法,回文串如果不知道可以给出一个例子:" noon ",这样应该就 ...
- 【面试笔试算法】Problem 9: 腾讯2016年研发实习笔试题:最长回文子串
(一)题目 问题:求给定字符串s的回文(palindrome)子串中,长度最大的回文子串的长度. 回文(palindrome)是指从左往右读和从右往左读字符串,看到的字符串都是一样的.比如" ...
- 5. Longest Palindromic Substring(最长回文子串 manacher 算法/ DP动态规划)
Given a string s, find the longest palindromic substring in s. You may assume that the maximum lengt ...
- 【翻译】Longest Palindromic Substring 最长回文子串
原文地址: http://articles.leetcode.com/2011/11/longest-palindromic-substring-part-i.html 转载请注明出处:http:// ...
- 转:C语言字符串操作函数 - strcpy、strcmp、strcat、反转、回文
转自:C语言字符串操作函数 - strcpy.strcmp.strcat.反转.回文 C++常用库函数atoi,itoa,strcpy,strcmp的实现 作者:jcsu C语言字符串操作函数 1. ...
- C语言字符串操作函数 - strcpy、strcmp、strcat、反转、回文
原文:http://www.cnblogs.com/JCSU/articles/1305401.html C语言字符串操作函数 1. 字符串反转 - strRev2. 字符串复制 - strcpy3. ...
- Palindrome(最长回文串manacher算法)O(n)
Palindrome Time Limit:15000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit ...
- 【算法】最长回文子串 longest palindrome substring
对于字符串S, 要找到它最长的回文子串,能想到的最暴力方法,应该是对于每个元素i-th都向左向右对称搜索,最后用一个数组span 记录下相对应元素i-th为中心的回文子串长度. 那么问题来了: 1. ...
随机推荐
- QT+FFMPEG实现视频播放
开发环境:MinGW+QT5.9+FFMPEG20190212 一.开发环境搭建 FFMPEG的开发环境部署比如容易,在官网下载库文件,然后在QT里面指定路径,把相关dll文件放到exe目录下就可以了 ...
- Python2.x升级python3.x【升级步骤和错误总结】
网上帖子一大堆,按照那些教程操作,确实可以成功安装.但是安装成功之后呢,pip还是用的python2的pip. 切换到python3的pip之后,发现无法下载模块,还会有很多报错信息.以及" ...
- 《Interest Rate Risk Modeling》阅读笔记——第二章:债券价格、久期与凸性
目录 第二章:债券价格.久期与凸性 思维导图 瞬时回报率-收益率的例子 第二章:债券价格.久期与凸性 思维导图 瞬时回报率-收益率的例子
- microbit之mpython的API
附录:常用API函数汇总 一.显示 display.scroll("Hello, World!") 在micro:bit点阵上滚动显示Hello, World!,其中Hello, ...
- 使用Docker之镜像的拉取、查询、删除
1:查看镜像列表 2:拉取镜像 通过命令可以从镜像仓库中拉取镜像,默认从Docker Hub 获取. 命令格式: docker image pull <repository>:< ...
- 基于.NET平台常用的框架整理 转自 http://www.cnblogs.com/zhuyongblogs/p/5353751.html
常用的一些开源组件整理: 导出Excel报表的插件:NOPI.dll(基于微软OpenXml实现)开源的作业调度和自动任务框架:Quartz.NET用于大数据搜索引擎的全文检索框架:Lucene.ne ...
- 攻防世界 高手进阶区 web cat
php cURL CURLOPT_SAFE_UPLOAD django DEBUG mode Django使用的是gbk编码,超过%F7的编码不在gbk中有意义 当 CURLOPT_SAFE_UPLO ...
- VMware + CentOS 7搭建环境(二)
1.环境要求建议使用VMwareWorkstation虚拟机软件:可以使用快照功能,保存虚拟机状态:本文档示例版本10.0.1:1.2 CentOS系统的iso文件; 下载好的.iso的压缩文件格式, ...
- MySQL5.7 安装和配置环境变量
安装 1.下载安装包 官网地址:https://dev.mysql.com/downloads/mysql/ 2.选择 Custom,自定义 3.根据自己系统选择 x64还是x86,然后点击第一个箭头 ...
- MySQL多实例安装、配置、启动(四)
一.规划信息 系统信息: cat /etc/redhat-release CentOS Linux release (Core) # uname -r -.el7.x86_64 数据库规划 PORT: ...