美文网首页leetcode
leetcode-程序员面试金典-回文排列

leetcode-程序员面试金典-回文排列

作者: 荣荣的靓仔小馒头 | 来源:发表于2020-05-18 10:37 被阅读0次

给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一。
回文串是指正反两个方向都一样的单词或短语。排列是指字母的重新排列。
回文串不一定是字典当中的单词。
示例1:
输入:"tactcoa"
输出:true(排列有"tacocat"、"atcocta",等等)
来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/palindrome-permutation-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

不得不说此题限于我有限的类C++思维,根本没有往“消消乐”这种快乐方法上想。
学到了一点新想法:对于字符串中重复字符的干扰,一定要想办法对字符串去重,化繁为简解决问题。

关于写法上,本人以前使用的string s 获取单个字符总是在遍历时候使用s.charAt(i),其实也可以通过s.toCharArray()直接转换成字符数组(淦!好方法)

下面粘贴一下AC代码

class Solution {
    public boolean canPermutePalindrome(String s) {
        Set<Character> set = new HashSet<>();
//另一种写法:HashSet<Character> set = new HashSet<Character>(); 
//对象的Character可以由JVM自动匹配,不需要再次表示类型
        char [] chars = s.toCharArray();
        for (Character character: chars)
        {
            if(!set.contains(character))
          //没有就加上
            set.add(character);
            else 
          //有就去重
             set.remove(character);
        }
        if(set.isEmpty ()|| set.size()==1)
            return true;
        else return false;
    }
}

相关文章

  • leetcode-程序员面试金典-回文排列

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

  • 处理字符串原则

    摘自《程序员面试金典》

  • 回文链表

    题目来源: 牛客网--程序员面试金典 题目描述 请编写一个函数,检查链表是否为回文。给定一个链表ListNode*...

  • Leetcode-面试题 01.04 回文排列

    面试题 01.04. 回文排列[https://leetcode-cn.com/problems/palindro...

  • leetcode-程序员面试金典刷题-URL化

    URL化。编写一种方法,将字符串中的空格全部替换为%20。假定该字符串尾部有足够的空间存放新增字符,并且知道字符串...

  • leetcode-程序员面试金典-字符串比较

    字符串有三种编辑操作:插入一个字符、删除一个字符或者替换一个字符。 给定两个字符串,编写一个函数判定它们是否只需要...

  • 第二天

    《程序员面试金典》前七章是建议和经验,还有一些面试信息。第八章是考题,第九章是解题技巧。今天来刷一刷《程序员面试金...

  • 面试题 02.01. 移除重复节点

    出自程序员的面试金典#### 面试题 02.01. 移除重复节点编写代码,移除未排序链表中的重复节点。保留最开始出...

  • 程序员面试金典_SetOfStacks

    原书中描述设想有一堆盘子,堆太高可能会倒下来;在现实生活中,盘子堆到一定高度时重新堆另外一堆盘子。请实现一种数据结...

  • 5.链表常见操作

    推荐大家看下《编程之美》、《程序员面试金典》 还有编程相关网站:leetcode老师讲的很多题其实就是这些书和网...

网友评论

    本文标题:leetcode-程序员面试金典-回文排列

    本文链接:https://www.haomeiwen.com/subject/oxzyohtx.html