1.害死人不偿命的(3n+1)猜想

import java.util.Scanner;
public class Main{
public static void main(String[] args){Scanner sc=new Scanner(System.in);int number=sc.nextInt();int i=0;while(number!=1){if(number%2==1){number=(3*number+1)/2;}else{number=number/2;}i++;}System.out.println(i);
}
}

注意:

1.在线编译需自己手写很多代码且无提示

2.次数循环只能用while,因为不明确循环次数

2.写出这个数

import java.util.Scanner;
public class Main{public static void main(String[] args){Scanner sc=new Scanner(System.in);//接收输入变量为字符串类型String input=sc.next();int sum=0;//字符串遍历不好做操作,因此转化为字符型数组char[] arr1=input.toCharArray();//遍历求和for(int i=0;i<arr1.length;i++){//得到字符型结果需转化为整数型sum+=arr1[i]-48;}String[] arr2={"ling","yi","er","san","si","wu","liu","qi","ba","qiu"};//把结果转化为字符串类型方便遍历String sumstr=Integer.toString(sum);//遍历结果分别进行对应,注意最后一个无空格,要进行区分for(int j=0;j<sumstr.length();j++){if(j!=sumstr.length()-1){//先取出字符串元素索引对应字符,转化为整型后直接作为拼音数组的索引得到指定拼音System.out.print(arr2[sumstr.charAt(j)-48]+" ");}else{System.out.print(arr2[sumstr.charAt(sumstr.length()-1)-48]);}}}
}

注意:思路简单,不熟悉方法汇总

1.toCharArray方法把字符串强转为字符数组

2.字符数-48可以把它转化为整型

3.把整型转化为字符串类型有几种做法:

常见做法:不同的类提供的静态方法---静态方法被static修饰,无需使用类实例调用,可以直接被类调用(String.valueof()和Integer.tostring()均可)

回顾:还可使用StringBuilder

一个可变字符串类,有append()和reverse()方法,可与string类进行相互转换;

具体转换:

StringBuilder是一个类,有它自己的有无参构造方法,通过传参s字符串,可以把字符串转换为StringBuilder类型,然后进行后续的append或reverse操作;而其再转化为String类型只需要使用内部静态方法tostring即可,可直接调用。

String s="我爱你";
StringBuilder sb=new StringBuilder(s);
sb.append("你也爱我")
String s1=sb.tostring();

4.charAt()是返回指定索引处的字符值

5.补充:字符串类型转化为整型Integer.parseInt()方法

总结:整型、字符型、字符串型之间的相互转换以及为什么要转换?

字符串---整型,可以直接转换,但涉及到字符串遍历,必须使用字符型取出每一个元素,取出后再转化为整型。

6.小tips

length用来返回数组长度;length()用来返回字符串长度

3.我要通过!(难)

该题理解稍有困难

indexof()方法用来返回指定字符串处索引

package question;import java.util.Scanner;//判断“PAT”是否通过
public class q3 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();while (n-- > 0) {String input = sc.next();if (judge(input)) {System.out.println("YES");} else {System.out.println("NO");}}sc.close();}//本题必须满足的条件如下:// 1.字符串中必须仅有 P、 A、 T这三种字符,不可以包含其它字符;// 2.P和T之间不能没有A(A的个数大于等于1,等于0就是错的)// 3.开头(P之前)的A的个数 * 中间(P和T中间)的A的个数 = 结尾(T之后)的A的个数,// 4.P和T只能有一个(可以合并到条件4,判断了条件4就不要判断这个了,看了条件4的计算公式就全明白了//      比如PPATT,P_index*(T_index - P_index - 1) == str.length() - T_index - 1)//      0*()==5-3-1private static boolean judge(String str) {String newStr = str.replace("P", "").replace("A", "").replace("T", "");if (newStr.isEmpty()) {//判断条件1int P_index = str.indexOf('P');int T_index = str.indexOf('T');if (P_index == T_index - 1) {//判断条件2return false;}/*if((str.indexOf('P')==str.lastIndexOf('P'))||(str.indexOf('T')==str.lastIndexOf('T'))){//判断条件4return false;}*/return P_index * (T_index - P_index - 1) == str.length() - T_index - 1; //判断条件3}return false;}}

4.成绩排名

编程思想记录:

1.循环输入多行数据

先接收个数,把需要用到的变量初始化,再利用循环多次接收每行数据

2.可以直接利用Math类的max()和min()方法来比较大小

6.换个格式输出整数

编程思想记录

1.获取一个数字的各个位数,最好的方法就是取商/或取余%

2.不确定输入位数时,采用while循环,!=0就输入,输入一次迭代条件-1

7.素数对猜想

编程思想记录

1.判断是否素数有两种方法,快速查找用sqrt

2.数组元素添加用索引、元素遍历也用索引;但注意如果初始化为空数组后续不能使用0索引

3.集合添加元素用add、判断长度用size、获取元素用get

4.判断素数的方法要记清

 public static boolean isprime(int n){for(int i=2;i*i<=n;i++){if(n%i==0){return false;}}return true;}

9.说反话

编程思想记录

1.字符串切割后split()可直接存放入数组中

2.用Scanner接收带有空格字符串时使用nextline而不是next

3.未知循环次数的循环使用while,基本格式为:

先初始化变量;

while(循环条件){

循环体

迭代条件

}

10.一元多项式求导

1.字符串要想去空格可以使用.trim()方法

2.数组遍历去最后空格只能采用if判断

14.福尔摩斯的约会

1.需要按先后顺序查找同一对字符串时,可使用flag=1来区分,查找玩就改变

2.字符型数据可以直接相减,必须使用单引号引用

3.printf为按格式输出,":%02d"代表宽度为2,不足0补齐,按整型格式输出

16.部分A+B

1.可以让数据都为字符型利用索引进行匹配判断,所以一般字符串的接收都可以用字符型数组实现

2.计算必须为整型,字符型转整型直接-48即可

3.体现个十百位迭代可设flag为1,每次*10迭代即可

17.A除以B

1.当输入数据过大时,采用字符缓冲流接收数据,同时需要抛出异常

2.BigInteger有特殊的求解商的办法,即divide,但它也是一个类,需要新建

18.石头剪刀布

1.理清逻辑就不难,使用switch-case书写格式判断,既要有获胜总次数计数,也要有获胜方式分类计数

2.两两比较可采用三次比较if判断

3.输出换行可用"\n"

19.数字黑洞

1.位置循环次数可使用while(true)循环

2.注意条件在循环里还是循环外

3.整型数字转字符型数组,需要先转字符串,可使用String类的format方法

4.Arrays.sort()方法可对数组排序

21.个位数统计

1.使用字符缓冲流接收数据

2.计数巧思,利用数组元素充当计数数组索引

22.D进制的A+B

1.Integer.tostring(a,b)方法可以直接使数字a按b进制转换出来

24.科学计数法

1.使用BigDecimal类接收输入数据

2.使用该类数据.toplainstring()方法可以输出科学计数法对应的数字

26.程序运行时间

1.计算时分秒

小时/3600;分钟/60%60;秒数%60

27.打印沙漏

本质还是打印两个三角形

28.人口普查

1.字符串的compareto方法,前者<后者就返回<0;反之>0

2.查找最大最小值时要设立标准值和初始化值,逻辑不能混淆

29.旧键盘

1.contains()可以用来判断前者字符串是否包含后者字符串,返回布尔型数据

2.把字符型数据转化为字符串型数据直接+“”即可

3.字符串拼接直接用+连接即可,因此也可做循环

4.touppercase()方法可以直接把字符串中所有小写字母变为大写

30.完美数列

1.找最大长度要定义一个临时长度和结果长度初始化

31.查验身份证

1.字符串取元素,只能用chartat()取出字符,若再转为字符串可使用String.valueof()方法

2.字符串匹配可使用equals()方法

32.挖掘机技术哪家强

1.利用哈希表来存储键值对

2.哈希表常用方法,containskey()查看是否存在某键;get()获取键对应的值;put()添加元素

3.找最大最小值,就先初始化一个数据,用if去找即可,该if要在for循环里

36.跟奥巴马一起编程

1.画一行数不能用双重循环

37.在霍格沃兹找零钱

1.涉及需要进行除法的数据用long型存储

2.不是10进制数计算,先按进制求和求差再按进制转化(求/求%即可),注意前后顺序

3.整型可以强转为整型

39.到底买不买

1.一个新奇的思路:数组索引不一定是数字,也可以是字符,然后对应位置计数,有点像字典的意思

41.有几个PAT

1.后续循环恰好需要对应索引时,一开始就都创建成数组,而不是直接接收

42.字符统计

1.词频统计可使用键值对思想,创建哈希表

2.字符型数据封装类型可写为Character

3.哈希表常用方法:get()获取键对应值;getordefault()获取键对应值,否则返回默认值;keyset为键的集合

47.编程团体赛

1.哈希表存储可实现迭代求和

48.数字加密

1.StringBuilder也可使用charAt()方法,其也有反转方法reverse()

49.数列的片段和

1.有小数就用float存储

2.输出保留两位小数格式“%.2f"

51.复数乘法

1.Math也有求正余弦方法

2.正余余正符号同,余余正正符号异

52.卖个萌

1.substring()方法为字符串截取,indexof()为起始位置,lastindexof()为结束位置

2.trim()可以去字符串的空格

58.选择题

1.创建类对象时可直接放在程序最后即可

2.PrintWiter输出流可与字符输入流配套使用

3.可直接使用对象.属性=来赋值

59.C语言竞赛

1.判断素数的独立方法

public static boolean isPrime(int n) {for (int i = 0; i * i < n; i++) {if (n % i == 0) {return false;}}return true;}

60.爱丁帧数

1.Arrays.sort()可对数组排序

61.判断题

1.逻辑简单,但整型判断使用==无效时,可使用字符串equals判断字符串是否匹配

2.慎用数组初始化,极易发生数组索引越界问题

62.最简分数

1.求两数最大公约数可以单独写一个方法,利用了递归的思想

static int gcd(int m,int n){return n==0?m:gcd(n,m%n);}

2.分数不能以double形式输出,只能分别输入再做除法

3.字符串强转为double类型可使用double.parsedouble()方法

4.数值比较时必须同类型,不能一个整形一个浮点型

63.计算谱半径

1.求平方和可使用Math自带方法即可

Math.sqrt(Math.pow(n1,2)+Math.pow(n2,2))

64.朋友数

1.集合可以保证元素不重复

2.Collections.sort()可以直接升序排序

3.哈希集合可以仅存储数据的值

65.单身狗

1.凡是存在一一对应的关系时适合采用哈希表存储数据

2.哈希表判断是否包含某键,使用方法containskey

3.最后一个输出无空格,可以使用遍历循环输出前几个,最后一个单独输出即可

66.图像过滤

1.当输入存在二维循环规律性时可使用二维数组存储数据并输出

67.试密码

1.未知循环次数时可以使用while死循环来控制,只要true就可以输入

69.微博转发抽奖

1.动态移动思路,不太好理解

70.结绳

1.把double类型数据强转化为int类型就可以实现向下取整的效果

71.小赌怡情

1.逻辑判断:比如玩游戏,有一个大前提,没有它游戏都不能进行了就先判断此条件;然后输赢情况分别判断,要更新变量;最后在输的情况下还有更坏的情况就在此判断下继续判断就好

72.开学寄语

1.区分:set是无法存储重复值的,但是arraylist是可以存储重复元素的。

2.做匹配问题时就要想到哈希表更便捷一些

3.报错InputMisMatchException代表输入数据与要求类型不符

74.宇宙无敌加法器

1.实现自动补0可以循环迭代在前面“0”+

2.进制转换难在求每一位上的进位和余数时都要加上上一次迭代新进的位数,所以要先求余数,加上迭代后再求进位

3.输出就是每一位余数拼接,最后最高位还要输出进位

4.BigInteger可以对数进行处理,使其前面的0去掉,转换为大整数(死记)

76.Wifi密码

1.字符串拼接首选StringBuilder,最后输出需要利用tostring()方法转换

2.字母和数字有对应关系时,可利用-‘A’来求取

77.互评成绩计算

1.找最大最小值一般就是用Array.sort()方法或者初始化0再一个个遍历去查找

2.Math.round()可以对结果取整数

79.延迟的回文数

1.难在判断回文数的方法,从前和从后判断是否相等

2.数据太长时使用BigInteger来创建,但是它可接收String类型数据确不接收int类型

3.BigInteger也有tostring方法

4.BigInteger可使用add方法直接求和

81.检查密码

1.逻辑简单,但要分清大前提先判断,记录各种类型密码个数再判断就好

82.射击比赛

1.哈希表不能通过值来查找对应的键,一般都是根据键来查找值,所以可以改变对应关系

2.通过循环只输出一行的,一般在循环外输出,循环内只做变量更新,需要做到结果初始化

83.是否存在相等的差

1.对于一组具有重复出现的数字要统计其次数,最后用集合存储数字,使用哈希表存储次数,因为集合存储可以保证不重复且进行排序,而哈希表可利用getordefault(,0)+1实现迭代---哈希表的嵌套

2.Math.abs()可以返回一个数的绝对值

85.PAT单位排行

1.涉及到多依据排名问题可以创建新的类和方法,实现Comparable接口,重写compareto方法

86.就不告诉你

1.字符串逆转就用StringBuilder.reverse()就好,最后输出要转一下tostring

87.有多少不同的值

1.需要计算不重复的个数首选哈希集合

88.三人行

1.判断有解需要满足题目说的所有条件

91.自守数

1.求一个数的尾数,就是对10的倍数的余数,可变

2.如果判断不是二者对立的问题就加一个flag标识,初始化为false,找到了就改变并break;跳出循环再判断!flag的情况

92.最好吃的月饼

1.输入直接加和情况,用二重循环即可

2.可变字符串拼接加空格,最后trim去空格也可,省略判断是不是最后一个的步骤

93.字符串A+B

1.防止重复,利用哈希表存,无所谓次数,又不统计

94.谷歌的招聘

1.s.substring(,)可以截取字符串的一截,括号里为起始位置和终止位置

96.大美数

1.循环添加一个数的所有因数

HashSet<Integer> hs=new HashSet<>();for(int i=1;i*i<=n;i++){if(n%i==0){//表明可添加两个公因数hs.add(n/i);hs.add(i);}}

98.岩洞施工

1.思路就是找上下管道的最低最高点即可

99.性感素数

1.for循环未知循环次数,可以把终止循环条件省略不写

100.校庆

1.数据处理敏感度:有对应关系哈希表;需要排序就列表,需要不重复得先集合

101.B是A的多少倍

1.substring()方法是左闭右开的;同时也遵循索引计数

102.教超冠军卷

1.做对照关系时,为了减少循环,也可以使用字符串分割,而不用哈希表

103.缘份数

1.凡是涉及到无解的问题都要设一个flag标识,一般初始化就是假的,有解了再改变为真,!flag就是无解

2.使用Math.sqrt()一般得到的是浮点类型数,需要再强转为int类型

106.2019数列

1.构造无穷数列就想到列表存储

107.老鼠爱大米

1.数组排序用arrays;列表排序用collections

2.可变字符串的好处在于可以随意添加任何数据类型的数据,不一定非要是字符串

108.String复读机

1.记住复读机的思路:先计数,然后死循环输出一个消耗一个

2.注意要想按格式输出需保证最后很多if判断并列

先到这里吧!

PAT乙级题目合集(思路笔记)相关推荐

  1. 20210325:力扣递归,回溯类型题目合集

    力扣递归,回溯类型题目合集 题目 思路与算法 代码实现 写在最后 题目 子集 2. 90. 子集 II 3. 40. 组合总和 II 4. 22. 括号生成 思路与算法 子集:注释的很详细,递归生成子 ...

  2. 20210322 :贪心思想力扣典型题目合集

    贪心思想力扣典型题目合集 写在前面 题目列表 思路分析 代码实现 写在前面 贪心的思想很多时候在于想到那个贪心的点上,而对徒手书写某些代码结构的能力并不做要求,个人认为需要的是你敏锐的意识到这个贪心的 ...

  3. 20210310 20210311 :栈、队列、堆类题目合集

    栈.队列.堆类题目合集 写在前面 题目列表 思路分析 代码实现 写在前面 栈.队列.堆基本的题目就是这些,需要特殊技巧的另算,重写一遍保证熟练掌握这些题目并且达到熟练使用的程度.记录以便后续再次学习. ...

  4. 牛客网-精华专题-前端校招面试题目合集

    前端校招面试题目合集 501 HTML CSS 前端基础 HTML 浏览器页面有哪三层构成,分别是什么,作用是什么? 构成:结构层(structural layer).表示层(presentation ...

  5. 珍宝鸭的力扣练习(7):分治法题目合集

    动态规划和分治法的区别 动态规划也是一种分治思想(比如其状态转移方程就是一种分治),但与分治算法不同的是,分治算法是把原问题分解为若干个子问题,自顶向下求解子问题,合并子问题的解,从而得到原问题的解. ...

  6. 高难度c语言编程题,高难度脑筋急转弯题目合集带答案

    脑筋急转弯,是指一些不能用惯性思维来回答的问题.经常玩这类游戏,可以锻炼人的发散思维以及应变能力,提高反应速度.今天给大家带来一些脑筋急转弯干货,希望可以帮助到有需要的同学! 高难度脑筋急转弯题目合集 ...

  7. 中高级面试题题目合集

    题目合集持续更新ing- 前端基础github地址.README.md可以下载到typora中打开,会有整个大纲目录显示(github中markdown目录快捷生成方式不现实,之后可能会想办法生成贴过 ...

  8. PAT乙级题目对应知识点分类梳理例程(更新至1102)

    PAT乙级题目对应知识点分类梳理 PAT乙级的90道题的知识点与对应的题号整理如下,便于做专项练习和巩固! 题型 备注 1.字符串函数 考察字符串相关知识,如逆转.字母与数字的判断与转化.字符串拼接. ...

  9. PAT乙级题目索引(题目+解析+AC代码)

    题目信息 分值 PAT 乙级 1001 害死人不偿命的(3n+1)猜想 15 PAT 乙级 1002 写出这个数 20 PAT 乙级 1003 我要通过! 20 PAT 乙级 1004 成绩排名 20 ...

最新文章

  1. 语言中knitr_R语言软件包的批量引用
  2. apache php5.3 配置_php-5.3+APACHE 安装配置
  3. 孤傲授权系统网站源码
  4. Java多线程及并发
  5. 阿里京东被怼假货泛滥;谷歌 CEO 承认中国版搜索 App 存在;YouTube 全球宕机 | 极客头条...
  6. 基于Bayes和KNN的newsgroup 18828文本分类器的Python实现
  7. python管道怎么使用_如何在多个流程中正确使用管道(2)
  8. mysql建考勤信息代码_基于Java+JSP+Servlet+Mysql的考勤管理系统
  9. golang报错fatal error: all goroutines are asleep - deadlock
  10. html css 怎么画星形,使用CSS如何绘制五角星?(附代码)
  11. html5表格数据加载,bootstrap table load加载数据到表格的方法
  12. Qt实现基于G.729A(G729A)的语音聊天
  13. 2022年正月初七复工通知
  14. 走马观花-浪里跳-学习英文
  15. 嵌入式linux ARM 开发板 使用pyqt显示界面
  16. 独立产品灵感周刊 DecoHack #028 - 如何给你的项目取一个好名字
  17. 熬夜再战Android之修炼Kotlin-为什么要搞她?
  18. MySQL的MDL元数据锁
  19. 计算机视觉、机器学习、图形学等学习资料网站
  20. 那些年我失败的当让我依然热血沸腾的创业项目之快递到家这里写自定义目录标题

热门文章

  1. 搭建一个基于flask和redis的代理池(proxy pool)
  2. 打开Vi编辑器出现E325: ATTENTION的解决方法
  3. 鳄鱼!自然界最完美的伏击捕食
  4. pickle.dump和pickle.load
  5. 搜狐畅游2021届校园招聘简章
  6. 麦咖啡阻挡正常打开Excel文件
  7. 为什么域名根服务器只能有13台呢?
  8. 剖析javascript中构造函数
  9. GUI编程--PyQt5--QWidget2
  10. 《Python语言程序设计》王恺 王志 机械工业出版社 第七章 I/O编程与异常 课后习题答案