先来手撕三道入门级算法题

简介: 《基础系列》

判断身份证:要么是15位,要么是18位,最后一位可以为字母,并写出程序提出其中年月日。要求:

写出合格的身份证的正则表达式,

^(\d{15}|\d{17}[\dx])$

写程序提取身份证中的年月日


publicclassIdCard

{

    privateString idCard;//私有变量

    publicIdCard(){}//构造方法

   //构造方法

   publicIdCard(String idCard){

       this.idCard=idCard;

     }

 

    publicvoidsetIdCard(String idCard)

    {

        this.idCard=idCard;

    }

 

    publicString getIdCard()

    {

        returnidCard;

    }

 

    //从身份证号码中截取生日

    publicString getBirthday()

    {

      returnthis.getIdCard().substring(614);

    }

 

    publicstaticvoidmain(String args[])

    {

        ShenFenZheng sfz = newShenFenZheng("420154199908157841");

         //调用getBirthday()方法获取生日

        System.out.println("生日:"+ sfz.getBirthday());

    }

}

627.对于一个字符串,请设计一个高效算法,找到第一次重复出现的字符保证字符串中有重复的字符,字符串的长度小于等于500.


packagecom.bjsxt;

importjava.util.ArrayList;

importjava.util.List;

publicclassFirstRepeat {

 

publicstaticvoidmain(String[] args) {

System.out.println(findFirstRepeat("pmedmitjtckhxwhvpwemznhmhzhpueainchqrftkmbjlradhmjekcqzansyzkvqhwnrdgzdbzewdmxkzrscikdaugbvygntrifnolehdtrqjlasofuvzeijbmzehkxknmjekcxswqldknysfsxrqaqzp",152));

}

//返回:y

    publicstaticcharfindFirstRepeat(String A, intn) {

     String[] str=A.split("");

     for(intx=0;x<n;x++){

      intindex=0;

      intnum=0;

      //对于每一个值,都需要从前开始遍历

      while(index<=x){

       if(str[index].equals(str[x])){

        num++;

       }

       index++;

      }

      //该值出现了两次,说明重复了

      if(num>1){

       charflag='x';

       flag=str[x].toCharArray()[0];

       returnflag;

      }

     }

     //返回该值说明已经没有重复的

     return'p';

    }

}

628.写一个完整函数,实现拷贝数组


publicclasstest {

 

publicstaticvoidmain(String[] args) {

int[] arr1 = {10,20,30,40,50};

int[] arr2 = CopyArray(arr1);

 

System.out.println(Arrays.toString(arr2));

}

 

privatestaticint[] CopyArray(int[] arr) {

int[] arr2 = newint[arr.length];

for(inti = 0; i < arr.length; i++) {

arr2[i] = arr[i];

}

returnnull;

}

}

629.写一排序算法,输入10个数字,以逗号分开,可根据参数选择升序或者降序排序,须注明是何种排序算法。


packagecn.bjsxt.demo;

 

importjava.util.Scanner;

 

publicclassSortDemo {

/**

 * 给定的字符串使用,号分隔

 * @param strNumber

 * @return

 */

publicstaticString [] split(String strNumber){

String [] strSplit=strNumber.split(",");

returnstrSplit;

}

/**

 * 将String类型的数组转换成int类型的数组

 * @param strSplit

 * @return

 */

publicstaticint[] getInt(String [] strSplit){

intarr[]=newint[strSplit.length];

for(inti = 0; i < strSplit.length; i++) {

arr[i]=Integer.parseInt(strSplit[i]);

}

returnarr;

}

/**

 * 冒泡排序

 * @param arr

 */

publicstaticvoidsort(int[] arr){

for(inti = 0; i < arr.length-1; i++) {

for(intj = 0; j < arr.length-1-i; j++) {

if(arr[j]>arr[j+1]) {

change(arr,j,j+1);

}

}

}

}

/**

 * 两数交换的方法

 * @param arr 数组

 * @param x 数组中元素的下标

 * @param y 数组中元素的下标

 */

publicstaticvoidchange(int[] arr,intx,inty){

inttemp=arr[x];

arr[x]=arr[y];

arr[y]=temp;

}

/**

 * 测试类

 * @param args

 */

publicstaticvoidmain(String[] args) {

Scanner input=newScanner(System.in);

System.out.println("请输入一个数字串,每个数字以逗号分隔");

String str=input.next();

 

//调用方法

String [] s=split(str);//使用逗号分隔

int[] arr=getInt(s);//调有获得整型数组的方法

sort(arr);//调用排序的方法

for(inti : arr) {

System.out.print(i+"\t");

}

}

}

相关文章
|
5月前
|
缓存 NoSQL 前端开发
如何开发工程项目部管理系统中的物资管理板块(附架构图+流程图+代码参考)
工程项目部物资管理需构建“申请→审批→采购→入库→领用→盘点→预警”闭环流程,实现库存可视、差异可控、现场高效。本文详解落地思路、架构设计、关键表结构、业务流程及开发技巧,并提供核心代码示例与FAQ,助力企业实现数据驱动的物资管理体系。
|
5月前
|
机器学习/深度学习 算法 数据挖掘
MyEMS 开源能源管理系统:跨领域能效优化的技术实践与价值落地
MyEMS 是一款开源能源管理系统,采用模块化设计与多维数据分析,广泛应用于工业、建筑、医疗等领域。通过数据驱动与标准对标,助力能效管理从被动监测转向主动优化,提升能源利用效率,满足 ISO 50001、GB/T 等标准要求,提供灵活可迭代的智能化解决方案。
125 0
|
10月前
|
算法 安全 应用服务中间件
云上部署WoSign SSL“国密RSA双证书”,助力国密合规建设
我国网络安全法规体系不断完善,形成了以《网络安全法》为核心的立体化法律框架。阿里云数字证书管理服务提供国产品牌SSL证书,支持签发基于国密算法的SSL/TLS证书,助力金融、政务等行业满足“网络与通信安全”合规需求。通过部署WoSign SSL国密RSA双证书方案,实现国际和国密算法自适应兼容,确保信息系统全球通用性与安全性。2025年3月阿里云“智惠采购季”活动期间,用户可享受SSL证书优惠折扣,助力信息安全建设。
352 2
云上部署WoSign SSL“国密RSA双证书”,助力国密合规建设
|
缓存 NoSQL Linux
Linux调试
本文介绍了Linux调试、性能分析和追踪的培训资料,涵盖调试、性能分析和追踪的基础知识及常用工具。
869 63
Linux调试
|
11月前
|
机器学习/深度学习 人工智能 弹性计算
阿里云服务器入门级、企业级、异构云服务器、弹性裸金属服务器区别参考
在我们选购阿里云服务器时,面对多样化的云服务器架构,如X86计算、ARM计算、GPU/FPGA/ASIC、弹性裸金属服务器以及超级计算集群等,我们需要根据实际需求选择合适的服务器类型。阿里云提供了入门级企业级云服务器、异构云服务器和弹性裸金属服务器等多种产品类型,以满足不同场景下的业务需求。本文将简要介绍这些不同类型的云服务器及其主要适用场景。
|
11月前
|
存储 关系型数据库 分布式数据库
PolarDB 开源基础教程系列 8 数据库生态
PolarDB是一款开源的云原生分布式数据库,源自阿里云商业产品。为降低使用门槛,PolarDB携手伙伴打造了完整的开源生态,涵盖操作系统、芯片、存储、集成管控、监控、审计、开发者工具、数据同步、超融合计算、ISV软件、开源插件、人才培养、社区合作及大型用户合作等领域。通过这些合作伙伴,PolarDB提供了丰富的功能和服务,支持多种硬件和软件环境,满足不同用户的需求。更多信息请访问[PolarDB开源官方网站](https://openpolardb.com/home)。
555 4
|
人工智能 监控
绩效管理方法和框架有哪些?
绩效管理在高效团队建设中至关重要,它通过目标管理、评估激励和绩效改进等环节,确保员工表现与组织目标一致,促进团队成长和协作效率,最终实现团队目标。有效的绩效管理流程包括绩效计划、实施与辅导、评估及复盘,旨在通过持续改进提升团队整体效能。
346 2
绩效管理方法和框架有哪些?
|
机器学习/深度学习 人工智能 边缘计算
AI技术趋势:从自动化到智能化的演变
AI技术趋势:从自动化到智能化的演变
|
算法
数据结构之购物车系统(链表和栈)
本文介绍了基于链表和栈的购物车系统的设计与实现。该系统通过命令行界面提供商品管理、购物车查看、结算等功能,支持用户便捷地管理购物清单。核心代码定义了商品、购物车商品节点和购物车的数据结构,并实现了添加、删除商品、查看购物车内容及结算等操作。算法分析显示,系统在处理小规模购物车时表现良好,但在大规模购物车操作下可能存在性能瓶颈。
340 0