`
xtuhcy
  • 浏览: 142266 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

算法1

    博客分类:
  • java
阅读更多

A string is a palindrome if it has exactly the same sequence of characters when read left-to-right as it has when read right-to-left. For example, the following strings are palindromes:

  • "kayak",
  • "codilitytilidoc",
  • "neveroddoreven".

A string A is an anagram of a string B if A can be obtained from B by rearranging the characters. For example, in each of the following pairs one string is an anagram of the other:

  • "mary" and "army",
  • "rocketboys" and "octobersky",
  • "codility" and "codility".

Write a function:

class Solution { public int isAnagramOfPalindrome(String S); }

that, given a non-empty string S consisting of N characters, returns 1 if S is an anagram of some palindrome and returns 0 otherwise.

Assume that:

  • N is an integer within the range [1..100,000];
  • string S consists only of lower-case letters (az).

For example, given S = "dooernedeevrvn", the function should return 1, because "dooernedeevrvn" is an anagram of the palindrome "neveroddoreven". Given S = "aabcba", the function should return 0.

Complexity:

  • expected worst-case time complexity is O(N);
  • expected worst-case space complexity is O(1) (not counting the storage required for input arguments).

 

 

解决方案:

时间复杂度和空间复杂度都能符合要求

 

public int isAnagramOfPalindrome2(String S) {
  int n = S.length();

  Vector<Character> v = new Vector<Character>(26);
  for(int i = 0; i < n; i++) {
   Character c = S.charAt(i);
   if(v.contains(c)) {//已经包含就移除,意思是出现次数为偶数的就不统计
    v.remove(c);
   } else {
    v.add(c);
   }
  }

  if(n % 2 == 0 && v.size() == 0) {//S的长度的偶数,那么各个字母的出现次数必须都是偶数
   return 1;
  } else if(n % 2 != 0 && v.size() == 1) {//S的长度是奇数,那么可以有一个字母的出现次数是奇数
   return 1;
  } else {
   return 0;
  }
 }

0
0
分享到:
评论

相关推荐

    遗传算法1_MATLAB遗传算法工具箱的设计.PDF

    遗传算法1 遗传算法1 遗传算法1 遗传算法1

    JAVA近百种算法大全

    1. Dijkstra算法:求解图中两点间的最短路径。 2. Bellman-Ford算法:处理负权边的最短路径问题。 3. Kruskal算法和Prim算法:求解最小生成树,用于网络连接优化。 4. Ford-Fulkerson算法:计算网络的最大流,解决...

    智能算法详细ppt课件(遗传算法,模拟退火,禁忌搜索)

    在"第四章__遗传算法1.ppt"至"第四章__遗传算法3.ppt"中,详细介绍了遗传算法的原理、步骤和实际应用,如旅行商问题、组合优化等问题的求解。 **模拟退火算法(Simulated Annealing, SA)**是受到固体物理中材料...

    存储管理 常用页面置换算法模拟

    1. 最佳淘汰算法(OPT):该算法是基于未来使用的页面来选择要换出的页面。它可以保证最小的页面换入次数,但需要知道将来的页面访问序列,实际实现中很难实现。 2. 先进先出的算法(FIFO):该算法按照页面进入内存...

    银行家算法实现(代码全面解析)

    算法分析: (一)数据结构: 1.可利用资源向量Available 2.最大需求矩阵Max 3.分配矩阵Allocation 4.需求矩阵Need (二)功能介绍: 模拟实现Dijkstra的银行家算法以避免死锁的出现.分两部分组成: 第一...

    最新某男孩第8期算法+设计模式

    1.s8算法1-1 算法基础 10.s8算法2-4 链表 哈希表 11.s8算法2-5 算法题 12.S8设计模式-1 设计模式简介 13.S8设计模式-2 创建型模式 14.S8设计模式-3 结构型模式 15.S8设计模式-4 行为型模式 16.5 设计模式总结 17.6 ...

    数学建模常用智能算法及其Matlab实现.pdf

    数学建模中常用到以下算法1:蒙特卡罗算法;2:数据拟合、参数估计、插值等数据处理算法(常用matlab实现);3:线性规划、整数规划、多元规划、二次规划(用lingo、lingdo、matlab即可实现);4:图论算法(包括最...

    遗传算法1.zip_Q87_VRP 遗传算法_vrp_送货 遗传算法_遗传算法 矩阵

    遗传算法求解求解vrp问题,以送货问题为算例,已知送货量和距离矩阵。

    《算法导论》第三版课后习题全解

    1. 排序算法:包括冒泡排序、选择排序、插入排序、希尔排序、快速排序、归并排序、堆排序等。理解它们的时间复杂度和空间复杂度特性,以及适用场景。 2. 查找算法:线性查找、二分查找、哈希查找。二分查找在有序...

    5种多旅行商问题(MTSP)的遗传算法

    `遗传算法1`可能是一个单独的遗传算法实现,可能与上述的一种或多种方法有关,或者是一个更具体的改进版本。这个文件可能包含源代码、算法流程图或者实验结果。 `新建文件夹`可能包含其他辅助文件,如数据集、结果...

    动态规划,分治算法,概率算法,模拟退火算法,搜索算法,贪婪算法,网上matlab,遗传算法,组合算法

    本篇文章将深入探讨标题和描述中提到的一些核心算法,包括动态规划、分治算法、概率算法、模拟退火算法、搜索算法、贪婪算法、在线MATLAB应用、遗传算法以及组合算法。 1. **动态规划**:动态规划是一种解决具有...

    首次适应算法 最佳适应算法 循环首次适应算法 

    1. 首次适应算法(First Fit) 首次适应算法是一种简单的内存分配策略。当一个进程请求内存时,系统会遍历所有的空闲分区,选择第一个足够大的空闲分区来满足进程的内存需求,并将其分配给进程。这种方法的优点是...

    代码 多种群遗传算法的函数优化算法代码

    代码 多种群遗传算法的函数优化算法代码代码 多种群遗传算法的函数优化算法代码代码 多种群遗传算法的函数优化算法代码代码 多种群遗传算法的函数优化算法代码代码 多种群遗传算法的函数优化算法代码代码 多种群遗传...

    电梯调度算法(算法合集)

    1. 强化学习算法:这是一种机器学习方法,通过与环境的交互来优化策略。在电梯调度中,算法会学习如何根据乘客需求、电梯状态和实时信息来调整电梯的行动,以最大化某些奖励指标,如乘客等待时间的减少或能源效率的...

    纵横交叉算法纵横交叉算法2023

    纵横交叉算法纵横交叉算法新型的群智能算法 纵横交叉算法纵横交叉算法新型的群智能算法 纵横交叉算法纵横交叉算法新型的群智能算法 纵横交叉算法纵横交叉算法新型的群智能算法 纵横交叉算法纵横交叉算法新型的群智能...

    新型群智能优化算法(matlab实现)——烟花算法、粒子群算法、蚁群算法

    1. **烟花算法**(Fireworks Algorithm, FWA): 火花算法是2010年由华中科技大学的学者提出的一种新型全局优化算法。它模拟了烟花爆炸的过程,其中每个烟花代表一个解空间中的潜在解,爆炸产生的火花则代表新的解...

    素性检测算法代码 掌握和理解Solovag-Strassen算法、Lehmann算法和Rabin-Miller素性检测算法的原理

    1.公钥密码算法需要素数,任何合理规模的网络也需要许多这样的素数,了解如何对产生的随机数进行素性检测的方法。 2.掌握和理解Solovag-Strassen算法、Lehmann算法和Rabin-Miller素性检测算法的原理。

    DES算法 加密算法解密算法

    1977 年 1 月 15 日,DES 算法被美国国家标准局颁布为联邦数据加密标准(Data Encryption Standard),于 1977 年 7 月 15 日生效。 DES 算法原理 DES 算法是一种基于 Feistel 密码体制的分组加密算法。它将明文...

    粒子群算法、遗传算法以及两者的结合的优化算法

    粒子群算法(Particle Swarm Optimization, PSO)与遗传算法(Genetic Algorithm, GA)是两种在优化问题中广泛应用的全局搜索方法。它们都是基于自然选择和群体智能的启发式算法,能够有效地解决复杂多模态优化问题...

Global site tag (gtag.js) - Google Analytics