zoukankan      html  css  js  c++  java
  • 409. Longest Palindrome

    原文题目:

    409. Longest Palindrome

    解题:

    要找最长的回文串,思路就是建立一个字典char:int的map,遍历目标字符串,统计各个字符的个数,如果该字符有偶数个,那必然可以组成回文串,如果该字符是奇数个,那么就只能向下取偶了,同时还要加1,因为一个字符可以组成回文串,比如aaaff,那么就是faaaf这种,所以要特殊处理的就是奇数个数的字符,出现多个奇数个数字符时,总长度也只加1,所以可以在奇数个数字符出现时设置一个标志位。

    AC代码:

    class Solution {
    public:
    	int longestPalindrome(string s) 
    	{
    		if(s == "")
    		{
    			return 0;
    		}
    		int i = 0;
    		int odd = 0;
    		int even = 0;
    		int flag = 0;
    		map <char,int> maptmp;
    		map <char,int>::iterator it;
    		for(i =0; i< s.length();i++)
    		{
    			maptmp[s[i]]++;
    		}
    		for(it = maptmp.begin();it != maptmp.end();it++)
    		{
    			if(it->second %2 == 1)
    			{
    				odd += (it->second)/2;
    				flag = 1;
    			}
    			else
    			{
    				even += it->second;
    			}	
    		}
    		return flag?(even+2*odd+1):even;
    
    	}
    };
    

      

  • 相关阅读:
    IM 融云 之 初始化及登录
    IM 融云 之 安装cocoapods 安装 SDK
    github desktop 下载
    iOS 架构模式
    IM 融云 之 通讯能力库API
    IM 融云 之 开发基础概念
    IM 之 融云
    php获得文件的属性
    js模拟复制
    linux修改yum源
  • 原文地址:https://www.cnblogs.com/xqn2017/p/8480382.html
Copyright © 2011-2022 走看看