文档章节

基础算法----判断回文

春哥大魔王的博客
 春哥大魔王的博客
发布于 2017/02/27 13:21
字数 286
阅读 10
收藏 0

思想

我的实现比较简单就是两个指针一头一尾,对比两个值是否相等,如果题目改变:寻找最大回文,方法同样适用,修改起始索引即可;

判断是否回文字符串

string huiwen = "abcdcba";

#region 判断回文
static void checkHuiWen(string str)
{
    bool result = true;
    char[] arr = str.ToArray();
            /**
            * 回文对比中心索引两边值,依次做比较;
            * */
    int index = arr.Length - 1 / 2;
    int end = arr.Length - 1;
    for (int i = 0; i < index; i++)
    {
        if (arr[i] != arr[end - i])
        {
            result = false;
            break;
         }
    }
    if (result)
        System.Console.Write("say yes");
    else
        System.Console.Write("say no");
}
#endregion

输出

say yes;

寻找最大回文字符串

string huiwen = "abcdedcocde";

#region 最大回文字符串
static void maxHuiWenString(string str)
{
     char[] arr = str.ToArray();
     string tempStr = "";
     string result = "";
            /**
            * 以数组每个数字为中心,前后比较,如果前值等于后值则记录;
            * 循环体结束之后,进行多个回文比较,长度最大的保留;
            * */
    for (int i = 0; i < arr.Length; i++)
     {
           for (int j = 1; j <= i; j++)
            {
                if ((i - j) > 0 && (i + j) < arr.Length && arr[i - j] == arr[i + j])
                {
                    if (tempStr == "")
                        tempStr = arr[i].ToString();
                    tempStr = arr[i - j] + tempStr + arr[i + j];
                }
                else
                    break;
            }
            if (tempStr.Length >= result.Length)
            {
                result = tempStr;
                tempStr = "";
            }
        }
        System.Console.WriteLine(result);
    }
#endregion

结果

decocde

源码

http://git.oschina.net/aspnet/Suan-Fa

© 著作权归作者所有

共有 人打赏支持
春哥大魔王的博客
粉丝 18
博文 129
码字总数 73706
作品 0
海淀
程序员
程序员进阶之算法练习(三十三)LeetCode专场

前言 BAT常见的算法面试题解析: 程序员算法基础——动态规划 程序员算法基础——贪心算法 工作闲暇也会有在线分享,算法基础教程----腾讯课堂地址。 今天继续LeetCode专场练习。 正文 1、B...

落影loyinglin
08/18
0
0
程序员进阶之算法练习(二十八)

前言 四道题,分别锻炼四个能力。 第一题较为简单,后续的题目都需要一定的基础。 贪心是最基础的能力,codeforce有专门的 Tag用以描述,叫做greedy; 二分是常用的一种降低时间复杂度方法,...

落影loyinglin
04/23
0
0
最长回文子串与Manacher算法

题目描述 给定一个字符串,求它的最长回文子串的长度。 最简单粗暴的方法就是,枚举全部的字符串,然后每个都判断一下是不是回文,然后得到长度最长的字符串。显然,这个方法是可行的,可是也...

yejq8
2015/05/16
0
0
【文文殿下】Manache算法-学习笔记

Manache算法   定义:是一个判断回文子串的算法,我们结合例题解释:         题目:给定一个长度为 n 的字符串 S,求其最长回文子串 一个字符串是回文的,当且仅当反转后的串与原...

文文殿下
07/14
0
0
java简单算法总结

1、翻转字符串 function reverseString(str) { }reverseString("hello"); 2、阶乘算法 public static int factorialize(int num) { } else { } } public static void main(String[] args......

晚天吹凉风
2017/12/18
4
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

阿里云API网关使用教程

API 网关(API Gateway)提供高性能、高可用的 API 托管服务,帮助用户对外开放其部署在 ECS、容器服务等阿里云产品上的应用,提供完整的 API 发布、管理、维护生命周期管理。用户只需进行简...

mcy0425
34分钟前
4
0
解决远程登陆误按ctrl+s锁屏假死恢复

使用putty时,偶尔发生屏幕假死,不能输入等情况。 后来发现,只要数据ctrl+s,就会假死;输入ctrl+q就可以恢复过来。 很多刚从windows转移到linux上来工作的朋友,在用vi/vim编辑文件时,常常...

HJCui
37分钟前
0
0
@Transactional

事务管理是应用系统开发中必不可少的一部分。Spring 为事务管理提供了丰富的功能支持。Spring 事务管理分为编程式和声明式的两种方式。编程式事务指的是通过编码方式实现事务;声明式事务基于...

asdf08442a
41分钟前
2
0
widows下强制解除8080端口占用问题

使用win+R打开命令窗口 输入以下命令查看哪个任务占用了8080端口 netstat -ano |findstr "8080" 然后通过任务id强制关闭占用该端口的进程 tskill 10044 // 自己的试情况而定,这个ID是LISTE...

_Artisan
51分钟前
2
0
productFlavors简单实用

最近项目中,不同环境需要配置的参数越来越多,为了减少修改代码次数。研究了一下productFlavors的使用方式,总结如下 1. as3.0以上版本使用productFlavors时需要指定一个flavorDimensions,...

火云
53分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部