Thanks to visit codestin.com
Credit goes to github.com

Skip to content

lizhiyong16/on-leetcode

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

on-leetcode

记录leetcode解题思路

题目概要

找出给出字符串中最长的回文字符串。

例如

Input: "babad"
Output: "bab"
Note: "aba" is also a valid answer.

解题过程

  • 思路1:回文字符串的特点是翻转后字符串值保持不变,那是不是可以将源字符串翻转,然后找出两个字符串中都包含的子字符串,再选出长度最长的子字符串呢?

    按照这个思路实现后发现有一种情况不能解决,比如源字符串accdefcca翻转后为accfedcca,按照上面的思路找到了错误结果acc,放弃。

  • 思路2:以一个字符为中心向两侧比对,再以两个字符为中心向两侧比对(为中心的两个字符必须相同),找出左右两侧字符都相同的最大长度,然后再根据中心字符的位置,即可知道回文字符串的开始和结束位置,最终实现:LongestPalindromicSubstring

题目概要

给出字符串输出转换成指定行数的锯齿形线条后的字符串。

例1

Input: s = "PAYPALISHIRING", numRows = 3
Output: "PAHNAPLSIIGYIR"
Explanation: 

P   A   H   N
A P L S I I G
Y   I   R

例2

Input: s = "PAYPALISHIRING", numRows = 4
Output: "PINALSIGYAHRPI"
Explanation:

P     I    N
A   L S  I G
Y A   H R
P     I

解题过程

  • 思路:根据锯齿形线条的行数可以求出单个锯齿包含的字符个数(即numRows + numRows - 2),根据源字符串长度和单个锯齿长度可以求出锯齿组数,通过for循环输出每行的字符,第一行输出各组锯齿的第一个字符,第二行输出各组锯齿的第二个和最后一个字符,以此类推,第n行输出每组锯齿的第n个和第(numRows + numRows - 2) - n个字符。最终实现ZigZagConversion

About

solution of leetcode issue

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages