回文(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)的更多相关文章

  1. 【Python】回文palindrome——利用字符串反转

    回文 palindrome Python 字符串反转string[::-1] Slice notation "[a : b : c]" means "count in i ...

  2. manacher算法——回文串计算的高效算法

    manacher算法的由来不再赘述,自行百度QWQ... 进入正题,manacher算法是一个高效的计算回文串的算法,回文串如果不知道可以给出一个例子:" noon ",这样应该就 ...

  3. 【面试笔试算法】Problem 9: 腾讯2016年研发实习笔试题:最长回文子串

    (一)题目 问题:求给定字符串s的回文(palindrome)子串中,长度最大的回文子串的长度. 回文(palindrome)是指从左往右读和从右往左读字符串,看到的字符串都是一样的.比如" ...

  4. 5. Longest Palindromic Substring(最长回文子串 manacher 算法/ DP动态规划)

    Given a string s, find the longest palindromic substring in s. You may assume that the maximum lengt ...

  5. 【翻译】Longest Palindromic Substring 最长回文子串

    原文地址: http://articles.leetcode.com/2011/11/longest-palindromic-substring-part-i.html 转载请注明出处:http:// ...

  6. 转:C语言字符串操作函数 - strcpy、strcmp、strcat、反转、回文

    转自:C语言字符串操作函数 - strcpy.strcmp.strcat.反转.回文 C++常用库函数atoi,itoa,strcpy,strcmp的实现 作者:jcsu C语言字符串操作函数 1. ...

  7. C语言字符串操作函数 - strcpy、strcmp、strcat、反转、回文

    原文:http://www.cnblogs.com/JCSU/articles/1305401.html C语言字符串操作函数 1. 字符串反转 - strRev2. 字符串复制 - strcpy3. ...

  8. Palindrome(最长回文串manacher算法)O(n)

     Palindrome Time Limit:15000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit ...

  9. 【算法】最长回文子串 longest palindrome substring

    对于字符串S, 要找到它最长的回文子串,能想到的最暴力方法,应该是对于每个元素i-th都向左向右对称搜索,最后用一个数组span 记录下相对应元素i-th为中心的回文子串长度. 那么问题来了: 1. ...

随机推荐

  1. dataframe 基本操作

    package com.jason.example import org.apache.spark.sql.functions.broadcast class DFTest extends Spark ...

  2. vue表单验证不通过,依然能执行点击事件里面的代码?

    遇到的问题:表单提交的时候,写了rules,明明验证不通过依然执行了点击事件里面的代码. 这个验证有什么用? 后来 我看elementUI组件才发现,我漏写了几行代码. methods里面这样写 完美 ...

  3. 【已解决】C#导入音频文件

    C#导入音频文件,找到Resources.resx,再进行导入. 直接添加文件到Resources是不能使用的. 解决的具体步骤: 引用音频文件核心代码: //播放背景音乐 SoundPlayer m ...

  4. HttpInvoker GET/POST方式

    1.GET方式 HttpGet httpGet = new HttpGet("http://localhost:8080/randomCode/getSouthUuid"); St ...

  5. Git拉取远程分支命令

    如果我们想从Git仓库中拉取一个分支到本地,此处假如远程分支为develop,本地要创建的分支为dev,可以使用以下命令: git init    //初始化本地Git仓库 git remote ad ...

  6. 云计算入门(一)、使用vagrant+virtualbox安装虚机

    一.vagrant和virtaulbox简介 Vagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境,我们可以使用它来干如下这些事: 建立和删除虚拟机配置虚拟机运行参数管理虚拟机运行状态 ...

  7. Java-Iterator遍历集合

    import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.Ite ...

  8. How to call a stored procedure in EF Core 3.0 via FromSqlRaw(转载)

    问: I recently migrated from EF Core 2.2 to EF Core 3.0. Unfortunately, I haven't found a way to call ...

  9. .NET MVC 支付宝支付(即时到账)

    已经好久没有搞过.NET了,朋友有一个网站 ,需要接入支付宝功能,重新对接了一下. 1.开发前,需要一个企业支付宝账号登录,获取 PID和 配置密钥 官方文档:https://docs.open.al ...

  10. .net 调用 Python脚本中的代码

    使用工具:IronPython 工具介绍:是一种在 .NET 及 Mono上的 Python 实现,是一个开源的项目,基于微软的 DLR 引擎.(个人理解就是在 .net上面运行Python代码) 使 ...