算法5956. 找出数组中的第一个回文字符串(java / c / c++ / python / go / rust)

Posted 二当家的白帽子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法5956. 找出数组中的第一个回文字符串(java / c / c++ / python / go / rust)相关的知识,希望对你有一定的参考价值。


文章目录


5956. 找出数组中的第一个回文字符串:

给你一个字符串数组 words ,找出并返回数组中的 第一个回文字符串 。如果不存在满足要求的字符串,返回一个 空字符串 ""

回文字符串 的定义为:如果一个字符串正着读和反着读一样,那么该字符串就是一个 回文字符串

样例 1:

输入:
	words = ["abc","car","ada","racecar","cool"]
	
输出:
	"ada"
	
解释:
	第一个回文字符串是 "ada" 。
	注意,"racecar" 也是回文字符串,但它不是第一个。

样例 2:

输入:
	words = ["notapalindrome","racecar"]
	
输出:
	"racecar"
	
解释:
	第一个也是唯一一个回文字符串是 "racecar" 。

样例 3:

输入:
	words = ["def","ghi"]
	
输出:
	""
	
解释:
	不存在回文字符串,所以返回一个空字符串。

提示:

  • 1 <= words.length <= 100
  • 1 <= words[i].length <= 100
  • words[i] 仅由小写英文字母组成

分析

  • 面对这道算法题目,我陷入了沉思。
  • 感觉就是遍历数组,然后遍历字符,判断是否回文,没什么可以大优化的地方。
  • 头尾双指针,判断字符是否相等,指针逐渐向中间重合。

题解

java

class Solution 
    public String firstPalindrome(String[] words) 
        for (String word : words) 
			int l = 0;
			int r = word.length() - 1;
			while (l < r
					&& word.charAt(l) == word.charAt(r)) 
				l++;
				r--;
			
			if (l >= r) 
				return word;
			
		
		return "";
    


c

char * firstPalindrome(char ** words, int wordsSize)
    for (int i = 0; i < wordsSize; ++i) 
        char* word = words[i];
        int l = 0;
        int r = strlen(word) - 1;
        while (l < r
               && word[l] == word[r]) 
            l++;
            r--;
        
        if (l >= r) 
            return word;
        
    
    return "";


c++

class Solution 
public:
    string firstPalindrome(vector<string>& words) 
        for (string& word: words) 
            int l = 0;
            int r = word.size() - 1;
            while (l < r
                   && word[l] == word[r]) 
                l++;
                r--;
            
            if (l >= r) 
                return word;
            
        
        return "";
    
;

python

class Solution:
    def firstPalindrome(self, words: List[str]) -> str:
        return next((word for word in words if word == word[::-1]), '')
        

go

func firstPalindrome(words []string) string 
    for _, word := range words 
		l := 0
		r := len(word) - 1
		for l < r && word[l] == word[r] 
			l++
			r--
		
		if l >= r 
			return word
		
	
	return ""


rust

impl Solution 
    pub fn first_palindrome(words: Vec<String>) -> String 
        for word in words.iter() 
            let bs = word.as_bytes();
            let mut l = 0;
            let mut r = word.len() - 1;
            while l < r && bs[l] == bs[r] 
                l += 1;
                r -= 1;
            
            if l >= r 
                return word.clone();
            
        
        "".to_string()
    



原题传送门:https://leetcode-cn.com/problems/find-first-palindromic-string-in-the-array/


非常感谢你阅读本文~
欢迎【👍点赞】【⭐收藏】【📝评论】~
放弃不难,但坚持一定很酷~
希望我们大家都能每天进步一点点~
本文由 二当家的白帽子:https://le-yi.blog.csdn.net/ 博客原创~


以上是关于算法5956. 找出数组中的第一个回文字符串(java / c / c++ / python / go / rust)的主要内容,如果未能解决你的问题,请参考以下文章

力扣——求一组字符中的第一个回文字符

力扣——求一组字符中的第一个回文字符

力扣——求一组字符中的第一个回文字符

[Leetcode Weekly Contest]272

解题报告力扣 第 272 场周赛

寻找最大回文字符串: Manacher算法详解