【Leetcode】面试题 01.02. 判定是否互为字符重排、面试题 01.04. 回文排列

news/2025/2/28 7:15:55/

 作者:一个喜欢猫咪的的程序员

专栏:《Leetcode》

喜欢的话:世间因为少年的挺身而出,而更加瑰丽。                                  ——《人民日报》


目录

面试题 01.02. 判定是否互为字符重排 

面试题 01.04. 回文排列


面试题 01.02. 判定是否互为字符重排 

面试题 01.02. 判定是否互为字符重排https://leetcode.cn/problems/check-permutation-lcci/ 题目描述:

给定两个由小写字母组成的字符串 s1 和 s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。

示例:


思路:

设定两个下标n1,n2来遍历两个字符串,设s2的长度为size,判断s1[n1]==s2[n2],如果有交换s2中n2下标指向的字符和字符串的最后一个字符,n1++, size--;

注意极端情况:

s1的长度不等于s2的长度,返回false。

代码:

void swap(char* ch1, char* ch2)
{char tmp = *ch1;*ch1 = *ch2;*ch2 = tmp;
}
bool CheckPermutation(char* s1, char* s2) {int n1 = 0;int size = strlen(s2);if(strlen(s1)!=strlen(s2))return false;while (n1 < strlen(s1)){int num = size;int n2 = 0;while (n2 < size){if (s1[n1] == s2[n2]){if (n2 != size - 1)swap(&s2[n2],&s2[size-1]);size--;n1++;break;}n2++;}if (size == num){return false;}}return true;
}

面试题 01.04. 回文排列

面试题 01.04. 回文排列https://leetcode.cn/problems/palindrome-permutation-lcci/

题目描述:

给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一。

回文串是指正反两个方向都一样的单词或短语。排列是指字母的重新排列。

回文串不一定是字典当中的单词。

示例:


 思路:

注意回文串的特点是奇数个字符的数量要么是1要么0.

剩余的思想跟上题差不多

代码:

void swap(char* ch1, char* ch2)
{char tmp = *ch1;*ch1 = *ch2;*ch2 = tmp;
}
bool canPermutePalindrome(char* s) {int num = 0;//奇数字符个数int cur = 0;int size = strlen(s);if (size == 1)return true;while (cur < size){int m = 1;//个数int i = cur+1;while (i < size){if (s[cur] == s[i]){m++;swap(&s[i], &s[size - 1]);size--;}i++;}if (m % 2 == 1)num++;cur++;}if (num == 0 || num == 1)return true;elsereturn false;
}


http://www.ppmy.cn/news/13149.html

相关文章

SpringBoot自动配置原理

SpringBoot自动配置原理starter介绍starter原理2.1 起步依赖2.2 自动配置2.2.1 基于Java代码的Bean配置2.2.2 自动配置条件依赖2.2.3 Bean参数获取2.2.4 Bean的发现starter介绍 spring boot 在配置上相比spring要简单许多, 其核心在于spring-boot-starter, 在使用spring boot来…

【MySQL Shell】第 9 章 MySQL InnoDB ReplicaSet

本章目录 9.1 部署 InnoDB ReplicaSet 9.2 配置 InnoDB ReplicaSet 实例 9.3 创建 InnoDB ReplicaSet 9.4 向 ReplicaSet 添加实例 9.5 采用一个现有的复制设置 9.6 更改主实例 9.7 强制一个新的主实例 9.8 InnoDB ReplicaSet 锁 9.9 标记 ReplicaSets 9.10 检查 InnoDB Repli…

【每日一道智力题】之 轮流取石子(简单的尼姆博弈)

题目&#xff1a;一共有N颗石子&#xff08;或者其他乱七八糟的东西&#xff09;&#xff0c;每次最多取M颗最少取1颗&#xff0c;A&#xff0c;B轮流取&#xff0c;谁最后会获胜&#xff1f;&#xff08;假设他们每次都取最优解&#xff09;。解答&#xff1a;结论&#xff1a…

《后端技术面试 38 讲》学习笔记 Day 14

《后端技术面试 38 讲》学习笔记 Day 14 34 | 技术修炼之道&#xff1a;同样工作十几年&#xff0c;为什么有的人成为大厂架构师&#xff0c;有的人失业&#xff1f; 原文摘抄 最近几年的时间他承担的工作职责几乎没有变化&#xff0c;使用的技术、开发的项目几乎和头几年一样…

盘点:2022年豆瓣评分8.0以上的计算机书籍有哪些?

2022年已经结束 &#xff0c;小编来盘点一下过去一年里出版的计算机图书里&#xff0c;有哪些计算机书籍是豆瓣评分8.0以上图书。 1、人工智能&#xff1a;现代方法&#xff08;第4版&#xff09;&#xff08;上下册&#xff09; ​ 系统性总结人工智能的方方面面&#xff0c;…

【C++11】右值引用

右值引用是C11中才被提出来的新概念&#xff0c;而以前的版本中也有引用&#xff0c;但是是指的左值引用。归根结底&#xff0c;左右值引用都是给对象取别名。 1.区分左值和右值 提起左值和右值很多小伙伴可能第一时间会有点小蒙圈&#xff0c;敲了好长时间代码了&#xff0c;对…

详解MySQL数据库索引实现机制 - B树和B+树

详解MySQL数据库索引实现机制 - B树和B树1.索引的出现2.hash算法的缺点3.二叉排序树BST4.平衡二叉树AVL5.红黑树6.B树诞生了7.B树1.索引的出现 索引是一种用于快速查询和检索数据的数据结构&#xff0c;其本质可以看成是一种排序好的数据结构。 索引的作用就相当于书的目录。…

SpringBoot-自动配置-切换内置web服务器

SpringBoot-自动配置-切换内置web服务器 介绍 SpringBoot的web环境中默认使用tomcat作为内置服务器其实SpringBoot提供了4种内置服务器供我们选择分别为&#xff1a;Jetty&#xff0c;Netty&#xff0c;Tomcat&#xff0c;Undertow我们可以很方便的进行切换 实例演示 在pom文件…