【算法题】LeeCode 回文排列

234次阅读
没有评论

共计 724 个字符,预计需要花费 2 分钟才能阅读完成。

给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一。
回文串是指正反两个方向都一样的单词或短语。排列是指字母的重新排列。
回文串不一定是字典当中的单词。

1 <= s.length <= 1000
s 由小写英文字母组成

示例1

输入:”tactcoa”
输出:true(排列有”tacocat”、”atcocta”,等等)

import java.util.Scanner;

public class LeeCode_01_04 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String line = scanner.nextLine();
        System.out.println(canPermutePalindrome(line));
    }

    public static boolean canPermutePalindrome(String line) {
        char[] chars = line.toCharArray();
        int oneSingle = 0; // 奇数变量的个数
        int temp = 256; // 定义一个临时变量存储独一个变量
        for (int i = 0; i < chars.length; i++) {
            // 重复的奇数字符不再计入
            if (temp == chars[i]) {
                continue;
            }
            // 计数各个字符的个数
            int count = 0;
            for (int j = 0; j < chars.length; j++) {
                if (chars[i] == chars[j]) {
                    count++;
                }
            }

            if (count % 2 != 0) {
                oneSingle++;
                temp = chars[i];
            }
        }

        return oneSingle <= 1;
    }
}
正文完
 0
裴先生
版权声明:本站原创文章,由 裴先生 2022-04-26发表,共计724字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
本站勉强运行: