目录

裴先生
裴先生
发布于 2022-04-26 / 0 阅读
0
0

【算法题】LeeCode 回文排列

原创
给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一。 回文串是指正反两个方向都一样的单词或短语。排列是指字母的重新排列。 回文串不一定是字典当中的单词。
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;
    }
}

原创

版权声明:本博客原创文章,由 裴先生 2022年04月26日 发表。
转载说明:除特殊说明外本站文章皆由 CC BY-NC-SA 4.0 协议发布,转载须注明出处。


评论