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

简介: 《基础系列》

判断身份证:要么是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");

}

}

}

相关文章
|
6天前
|
人工智能 自然语言处理 机器人
数字化呼叫中心运营升级:效率提升与成本优化的实践方法
本文详细阐述了数字化呼叫中心运营升级的核心路径。首先,文章解析了传统呼叫中心面临的痛点,并提出了“以客户为中心”的数字化转型理念。接着,重点剖析了全渠道融合、智能客服应用、自动化质检与数据分析三大关键升级实践。通过具体的案例,文章展示了如何通过这些方法有效提升服务效率、优化客户体验,并显著降低运营成本。最后,为企业提供了具体的厂商选型与实施建议,旨在帮助企业平稳完成数字化转型。
68 22
|
7月前
|
机器学习/深度学习 人工智能 弹性计算
阿里云服务器入门级、企业级、异构云服务器、弹性裸金属服务器区别参考
在我们选购阿里云服务器时,面对多样化的云服务器架构,如X86计算、ARM计算、GPU/FPGA/ASIC、弹性裸金属服务器以及超级计算集群等,我们需要根据实际需求选择合适的服务器类型。阿里云提供了入门级企业级云服务器、异构云服务器和弹性裸金属服务器等多种产品类型,以满足不同场景下的业务需求。本文将简要介绍这些不同类型的云服务器及其主要适用场景。
|
8月前
|
人工智能 算法 测试技术
StockMixer:上海交大推出预测股票价格的 MLP 架构,通过捕捉指标、时间和股票间的复杂相关性,预测下一个交易日的收盘价
StockMixer 是上海交通大学推出的基于多层感知器的股票价格预测架构,通过指标、时间和股票混合实现高效预测。
479 11
StockMixer:上海交大推出预测股票价格的 MLP 架构,通过捕捉指标、时间和股票间的复杂相关性,预测下一个交易日的收盘价
|
11月前
|
资源调度 监控 调度
HPC高性能计算场景中如何实现“运行时调度”
在HPC高性能计算中,使用LSF或Slurm提交作业虽方便,但过程往往不可控,作业运行如同黑盒,失败后才能排查问题。为此,MMCloud提出“运行时调度”理念,实现在任务运行过程中进行智能资源调度,最大化资源利用并优化成本效益。与传统工具不同,MMCloud能够实时监控任务状态,并根据算力需求动态调整资源分配。
193 0
|
机器学习/深度学习 算法 数据安全/隐私保护
两万多字诠释python经典基础算法之100题【内含思路、程序和答案】【python小白必备】
本文为最最基础的python基础算法题目、思路和答案,适合python初学者使用,可以当作python入门算法工具书,虽然不具有高深的算法,但是都是企业级算法用的频率最多的,这也是学好高级算法的必经之路。希望收藏、关注、点赞哦。
|
安全 网络协议 网络安全
常见网络攻击方式及防御方法
网络安全威胁的不断演变和增长,网络攻击的种类和数量也在不断增加,攻防对抗实战演练在即,让我们一起了解一下常见网络攻击方式及防御方法。
817 0
|
Kubernetes 测试技术 API
ChaosBlade常见问题之安装K8S探针心跳检测失败如何解决
ChaosBlade 是一个开源的混沌工程实验工具,旨在通过模拟各种常见的硬件、软件、网络、应用等故障,帮助开发者在测试环境中验证系统的容错和自动恢复能力。以下是关于ChaosBlade的一些常见问题合集:
344 0
|
前端开发
前端知识笔记(三十一)———css实现水波纹效果(水球图)
前端知识笔记(三十一)———css实现水波纹效果(水球图)
611 0
|
安全 关系型数据库 应用服务中间件
服务被挖矿了?凌晨三点还在升级GitLab
gitlab漏洞导致服务器被植入挖矿程序,凌晨三点还在升级。
534 0
|
JavaScript 索引
Vue 模拟通讯录列表用 js-pinyin 获取汉字首字母,形成字母索引
Vue 模拟通讯录列表用 js-pinyin 获取汉字首字母,形成字母索引
398 0
Vue 模拟通讯录列表用 js-pinyin 获取汉字首字母,形成字母索引