某客网编程题三道(Java)——字符串、集合、数组

第一题:
题目描述
找出字符串中第一个只出现一次的字符
输入描述:
输入几个非空字符串
输出描述:
输出第一个只出现一次的字符,如果不存在输出-1
示例1
输入
asdfasdfo
aabb
复制
o
-1

import java.util.*;
public class Main{public static void main(String[]args){Scanner input=new Scanner(System.in);ArrayList<String>list=new ArrayList<>();while(input.hasNext()){list.add(input.nextLine());}for(String str:list){Map<Character,Integer>map=new HashMap<>();for(int i=0;i<str.length();++i){char x=str.charAt(i);if(!map.containsKey(x)){map.put(x,1);}else{map.put(x,map.get(x)+1);}}boolean flag=false;for(int i=0;i<str.length();++i){char x=str.charAt(i);if(map.get(x)==1){System.out.println(x);flag=true;break;}}if(!flag){System.out.println(-1);}}}
}

基本思路:利用HashMap进行一一映射,找到就个数加一,没有就入Map,最终只需要在Map找个数为一的就行。
为什么选取HashMap?
因为HashMap的增删查改时间复杂度都是O(1)。

第二题:
题目描述
输入n个整数,输出其中最小的k个。
本题有多组输入样例,请使用循环读入,比如while(cin>>)等方式处理
输入描述:
第一行输入两个整数n和k
第二行输入一个整数数组
输出描述:
输出一个从小到大排序的整数数组
示例1
输入
5 2
1 3 5 7 2
输出
1 2

import java.util.*;
public class Main{public static void main(String[]args){Scanner input=new Scanner(System.in);while(input.hasNext()){int n=input.nextInt();int k=input.nextInt();PriorityQueue<Integer>queue=new PriorityQueue<>(new Comparator<Integer>(){public int compare(Integer o1,Integer o2){return o2-o1;}});for(int i=0;i<n;++i){int x=input.nextInt();if(i<k){queue.offer(x);}else{if(x<queue.peek()){queue.poll();queue.offer(x);}}}ArrayList<Integer>list=new ArrayList<>();for(int x:queue){list.add(x);}Collections.sort(list);for(int x:list){System.out.print(x+" ");}System.out.println();}}
}

基本思路:建立一个大根堆,先入上K个值,然后堆顶一定是最大的,所以只需要用堆顶元素和K之后的元素进行比较,堆顶元素大就出堆,然后当前元素入堆,最终堆中剩下的就只有K个最小的元素了,下来就只用排序输出了。
注意:集合当中的PriorityQueue默认建立的是小根堆,所以需要重写比较器。

第三题:
题目描述
输入两个用字符串表示的整数,求它们所表示的数之和。
字符串的长度不超过10000。
本题含有多组样例输入。
输入描述:
输入两个字符串。保证字符串只含有’0’~'9’字符
输出描述:
输出求和后的结果
示例1
输入
9876543210
1234567890
输出
11111111100

import java.util.*;
public class Main{public static void main(String[]args){Scanner input=new Scanner(System.in);ArrayList<String>list=new ArrayList<>();while(input.hasNext()){String str1=input.next();StringBuilder s1=new StringBuilder();s1.append(str1);String str2=input.next();StringBuilder s2=new StringBuilder();s2.append(str2);StringBuilder end=new StringBuilder();while(s1.length()<s2.length()){s1.insert(0,'0');}while(s1.length()>s2.length()){s2.insert(0,'0');}int c=0;for(int i=s1.length()-1;i>=0;i--){char x=s1.charAt(i);char y=s2.charAt(i);int re=(x-'0')+(y-'0')+c;if(re<10){end.insert(0,re);c=0;}else{end.insert(0,re%10);c=1;if(i==0){end.insert(0,c);}}}System.out.println(end.toString());}}
}

基本思路:
由于输入的字符串长度可能很长,Long类型的数的长度也没有多长,所以就排除了通过Integer.valueOf取转化再计算了。那难道没办法了吗?不!其实很简单,只需要对字符串从后往前,一位一位算就可以了,但要考虑清楚是否有进位。每计算一位就连接一位,得到最终结果。

每天督促自己,一起加油!!!!!!!!!!!
同时有更好的做法的,欢迎讨论。

督促自己——某客网编程题三道(Java)——字符串、集合、数组相关推荐

  1. 牛客网编程题01--计算字符串最后一串单词的长度,单词以空格隔开,字符串小于5000

    *题目如下: 代码如下: // CalculateLength.cpp : 定义控制台应用程序的入口点. // 需求:计算字符串最后一串单词的长度,单词以空格隔开,字符串小于5000#include ...

  2. Python 牛客网编程题输入用例问题

    Python 牛客网编程题的输入用例 前言 切入正题 输入字符串 输入整数 输入列表 后记 前言 在牛客网刷题的时候,发现明明在python本地编译器能够轻松解决的输入用例问题,到牛客网在线编译就得好 ...

  3. 牛客网编程题python_牛客网数据结构练习题

    第一次使用牛客做编程题,刚开始不了解如何输入输出,查了查才知道.我用的是语言是 Javascript v8 6.0.0 readline() 表示得到输入的字符串,如果是多行的话,每readline一 ...

  4. python牛客网编程题_一波优秀的自学编程语言网站

    网课已经开设两三个月了 同学们上网课的效果怎么样呢? 特别是学编程的同学 没有了学校的学习氛围 没有了老师面对面教学指导 你是否为了编程而焦头烂额,生无可恋呢? 没事,现在同学们的福利来啦! 下面是给 ...

  5. python牛客网编程题_【面经】小米软件开发一面(python)面经 2020 2020

    作者:JessyTsui https://www.nowcoder.com/discuss/580721?type=2&order=0&pos=15&page=1&ch ...

  6. 牛客网编程题——合唱团(网易2017)

    这题在编程达人面前应该算是水题,但这算是我第一个做出来的动态规划程序,作为纪念,分享一下.题目链接: https://www.nowcoder.com/practice/661c49118ca2419 ...

  7. 牛客网编程题python输入输出_牛客网算法题目记录

    车站建设问题 有10^8个村庄排在一条公路上,依次编号为0~10^8-1,相邻村庄距离为1,其中有n个村庄居住着牛牛,居住着牛牛的村庄从小到大依次为a0~an-1,其中保证a0=0. 现在需要建设车站 ...

  8. 牛客网 [编程题]数字和为sum的方法数

    题目描述: 给定一个有n个正整数的数组A和一个整数sum,求选择数组A中部分数字和为sum的方案数. 当两种选取方案有一个数字的下标不一样,我们就认为是不同的组成方案. 输入描述: 输入为两行:第一行 ...

  9. 牛客网 [编程题]餐馆

    题目描述: 某餐馆有n张桌子,每张桌子有一个参数:a 可容纳的最大人数: 有m批客人,每批客人有两个参数:b人数,c预计消费金额. 在不允许拼桌的情况下,请实现一个算法选择其中一部分客人,使得总预计消 ...

最新文章

  1. 全球首条瓷绝缘子自动化生产线:黏土巧造“瓷器活”
  2. c语言节点导入数据编程,编程小白。用C语言计算SR E2E ARQ模式下节点的数据分析...
  3. 提高生产力:文件和IO操作(ApacheCommonsIO-汉化分享)
  4. 支持向量回归 svr
  5. pythonvim编辑教程_Pycharm学习教程(6) Pycharm作为Vim编辑器使用
  6. C++没有调用析构函数
  7. 网上收集的“知乎网”技术方案架构
  8. JavaScript事件函数监视
  9. 加州理工学院公开课:机器学习与数据挖掘_神经网络
  10. ClassPathResource详解
  11. QT TCP网络编程
  12. Hadoop 配置文件存放位置
  13. windows server 2016安装网卡驱动【引用】
  14. 使用EasyCHM破解版制作CHM帮助文档
  15. 基于胜任力模型的项目经理岗位培训需求分析研究
  16. 小程序 input 上传数据库
  17. 文件同步工具GoodSync简介
  18. cocoa touch
  19. 当酒品牌遇上爱“微醺”的年轻人,会擦出怎样的火花?
  20. 《信号与系统》解读 第1章 信号与系统概述-5:非常重要!!!深入、详细地解读什么基本的复指数信号、IQ信号、欧拉公式?

热门文章

  1. CSP 202012-5 星际旅行(60分)
  2. 神经翻译笔记4扩展b. RNN的正则化方法
  3. 不笑找我系列 | 程序员爆笑漫画十条
  4. EDAS发布单工作原理及问题排查
  5. openFOAM学习笔记(一)—— C++基础
  6. 自语之Mysql隐式提交和事务隔离级别的关系
  7. 四色问题的一般解----C语言实现
  8. Aegisub精细处理字幕文件
  9. 【转】深入理解JavaScript系列(8):S.O.L.I.D五大原则之里氏替换原则LSP
  10. 1维数组 2维数组