当前位置: 首页 > article >正文

【每日一题 | 24.10.6】确定字符串是否包含唯一字符

  • 1. 题目
  • 2. 解题思路
  • 3. 代码实现(AC_Code)

在这里插入图片描述
在这里插入图片描述

个人主页:C_GUIQU
归属专栏:每日一题

1. 题目

确定字符串是否包含唯一字符
在这里插入图片描述

2. 解题思路

题目要求:判断输入的字符串是否唯一,这里想到可以借助布尔数组。

第一步:忽略字母大小写
可以将输入字符串全部转换为小写或大写,在这里我们采用全部转换为小写,C++中采用tolower(),Java中采用input.tolowerCase()。

第二步:初始化标记数组
创建一个布尔数组作为标记数组(seen),因为ASCII字符码表一共有256个,所以数组大小应为256,每个字符的ACSII作为数组索引,记录每个字符是否已经出现过,若字符已经出现,则对应的seen索引为true。

第三步:遍历字符串,检查是否有重复字符
遍历已转换为小写的输入字符,如果seen数组值为false(此字符没有出现过),将其设置为true,表示已经出现过;如果seen数组值为true(此字符出现过),直接返回“NO”,遍历结束后未发现重复字符,返回“YES”。
在这里插入图片描述

3. 代码实现(AC_Code)

  • C++
#include <iostream>
#include <string>

using namespace std;

string isUnique(const string& input)   //是否唯一函数,返回字符串类型,input值不改变,引用效率高
{
    bool seen[256] = { false };   // 字符全部初始化为false

    for(char ch : input)   // 集合遍历
    {
        char lowerCh = tolower(ch);   //将字符全部转换为小写,以忽略大小写差异
        if(seen[lowerCh])   // 判断字符是否出现
            return "NO";
        seen[lowerCh] = true;   // 将字符标记为已出现
    }
    
    return "YES";   // 字符唯一
}

int main()
{
    string input;
    //cin >> input;
    getline(cin,input);   // 输入字符串,不受空格影响,取整行输入,读取范围比cin更广泛
    cout << isUnique(input) << endl;

    return 0;
}
  • Java
import java.util.Scanner;

public class Main {
    public static String isUnique(String input) {
        boolean[] seen = new boolean[256];
        input = input.toLowerCase();

        for (char ch  : input.toCharArray()) {
            if(seen[ch])
                return "NO";
            seen[ch] = true;
        }
        return "YES";
    }

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String input = scan.nextLine();

        System.out.println(isUnique(input));

        scan.close();
    }
}

最后,感谢您的观看,期待您的一键三连!
在这里插入图片描述


http://www.kler.cn/news/335038.html

相关文章:

  • 深度学习-----------------------------束搜索
  • 【pytorch】权重为0的情况
  • 【C#生态园】探索支付处理平台:核心功能、安装与配置、API概览全面比较
  • windows下安装rabbitMQ并开通管理界面和允许远程访问
  • 如何将 cryptopp库移植到UE5内
  • User-Agent在WebMagic爬虫中的重要性
  • Oracle中TRUNC()函数详解
  • cherry-markdown开源markdown组件详细使用教程
  • Vue H5(手写)实现下拉刷新
  • 51单片机的家用煤气报警系统【proteus仿真+程序+报告+原理图+演示视频】
  • 启用vnc访问Dell 服务器IDRAC 7虚拟控制台
  • 类的关联、依赖、聚合和组合关系的思考(一)
  • VRRP协议
  • ORB-SLAM复现时遇到的问题(复现失败,切莫当做教程)
  • [RabbitMQ] Spring Boot整合RabbitMQ
  • 一台手机可以登录运营多少个TikTok账号?
  • 【前端】前端数据转化为后端数据
  • 南昌网站建设让你的企业网站更具竞争力
  • 字节跳动收购Oladance耳机:强化音频技术,加速VR/AR生态布局
  • 云原生化 - 工具镜像(简约版)