今天成功报名蓝桥杯,期待审核通过,争取在忙碌的每天都要抽出一点时间刷题,小白一枚,无刷题经验,文章旨在记录刷题后的知识点以便复习,题目难度从简单开始,大标题为 oj 题目,个人只会暴力解题,不了解算法,遇到好的题解代码会代替我的暴力解题代码,在日后也会慢慢学习了解,不论快与慢,只要在坚持,就是在进步------高博
注:整个系列为 Java 语言进行题解,针对个人欠缺总结,若有不懂,可在评论区发表。
一、确定字符串中是否包含唯一字符
java
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String s=scanner.nextLine();
HashMap<Character,Integer> map=new HashMap<>();
for(int i=0;i<s.length();i++){
if(map.containsKey(s.charAt(i))){
map.put(s.charAt(i),map.get(s.charAt(i))+1);
}else{
map.put(s.charAt(i),1);
}
}
Collection<Integer> val=map.values();
if(val.contains(2))
System.out.println("NO");
else System.out.println("YES");
}
HashMap中的两个方法:
1、HashMap中 values() 方法
HashMap 类中的values()方法返回一个包含HashMap 中所有value 的Collection视图。这个Collection是基于HashMap 的映射关系的,所以对HashMap 的修改会反映在这个Collection中,反之亦然。如果在迭代过程中修改了HashMap,那么迭代的结果是不确定的。下面是一个简单的例子:
java
HashMap<String, Integer> map = new HashMap<>();
map.put("a", 1);
map.put("b", 2);
map.put("c", 3);
Collection<Integer> values = map.values();
System.out.println(values); // 输出 [1, 2, 3]
map.put("d", 4);
System.out.println(values); // 输出 [1, 2, 3, 4]
在这个例子中,我们创建了一个HashMap 并向其中添加了三个键值对。然后我们使用values()方法获取了所有的value ,并输出了它们。接着我们又向HashMap 中添加了一个键值对,并再次输出了values()方法返回的Collection,可以看到它也被更新了。
2 、HashMap 中 K**eySet()方法
**
可以使用**keySet()
方法获取HashMap**中所有的键(主键)。例如:
java
HashMap<String, Integer> map = new HashMap<>();
map.put("apple", 1);
map.put("banana", 2);
map.put("orange", 3);
Set<String> keys = map.keySet();
for (String key : keys) {
System.out.println(key);
}
输出结果为:
java
apple
banana
orange
在上面的例子中,keySet()
方法返回一个包含HashMap 中所有键的Set 集合。我们可以使用for-each循环遍历这个集合,获取每个键并打印出来。
3、输入字符串
可以使用Scanner类来输入字符串,示例代码如下:
java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入字符串:");
String str = scanner.nextLine();
System.out.println("您输入的字符串是:" + str);
}
}
运行程序后,控制台会提示用户输入字符串,用户输入后按回车键即可。程序会将用户输入的字符串保存在变量**str
**中,并输出到控制台上。
4、字符串转化为字符数组
可以使用String类的toCharArray()方法将字符串转换为字符数组。例如:
java
String str = "Hello World";
char[] charArray = str.toCharArray();
这样就可以将字符串**"Hello World"** 转换为字符数组charArray。
java
import java.util.Scanner;
public class InputExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个字符:");
char c = scanner.next().charAt(0);
System.out.println("您输入的字符是:" + c);
}
}
在这个例子中,我们使用 Scanner 类来读取用户输入的字符。首先,我们创建了一个 Scanner 对象,并将 System.in 作为参数传递给它,以便从控制台读取输入。然后,我们使用 next() 方法读取输入的字符串,并使用 **charAt(0)**方法获取第一个字符。最后,我们将输入的字符打印到控制台上。
5、输入字符
在Java中,可以使用Scanner类来输入字符。以下是一个简单的例子:
二、 确定字符串是否是另一个的排列
java
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String st1=scan.nextLine();
String st2=scan.nextLine();
char[] s1=st1.toCharArray();
char[] s2=st2.toCharArray();
Arrays.sort(s1);
Arrays.sort(s2);
for(int i=0;i<s1.length;i++){
if(s1[i]!=s2[i]){
System.out.println("NO");
return;
}
}
System.out.println("YES");
scan.close();
}
1、sort() 方法给数组排序
Java中可以使用Arrays类中的sort方法来给数组排序。sort方法可以对数组进行升序排序或者降序排序。
以下是一个对整型数组进行升序排序的例子:
java
int[] arr = {5, 2, 9, 1, 5, 6};
Arrays.sort(arr); // 对数组进行升序排序
System.out.println(Arrays.toString(arr)); // 输出结果为 [1, 2, 5, 5, 6, 9]
以下是一个对字符串数组进行降序排序的例子:
java
String[] arr = {"apple", "banana", "orange", "pear"};
Arrays.sort(arr, Collections.reverseOrder()); // 对数组进行降序排序
System.out.println(Arrays.toString(arr)); // 输出结果为 [pear, orange, banana, apple]
需要注意的是,如果要对自定义类型的数组进行排序,需要保证该类型实现了Comparable 接口或者传入一个Comparator对象作为参数。
2、equals 方法和 ==
equals是Java中的一个方法,用于比较两个对象是否相等。在Java中,有两种方式来比较对象的相等性:
-
==运算符:用于比较两个对象的引用是否相等,即它们是否指向同一个内存地址。
-
equals方法:用于比较两个对象的内容是否相等,即它们的属性值是否相等。
例如,我们有一个Person 类,包含name 和age两个属性:
java
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null || getClass() != obj.getClass()) {
return false;
}
Person person = (Person) obj;
return age == person.age && Objects.equals(name, person.name);
}
在这个例子中,我们重写了equals方法,使用name和age属性来比较两个Person对象是否相等。我们可以使用以下代码来测试:
java
Person person1 = new Person("Tom", 20);
Person person2 = new Person("Tom", 20);
Person person3 = new Person("Jerry", 30);
System.out.println(person1.equals(person2)); // true
System.out.println(person1.equals(person3)); // false
在这个例子中,person1 和 person2 的 name 和 age 属性都相等,因此 equals 方法返回true ;而 person1 和 person3 的 name 和age 属性不相等,因此 equals 方法返回 false。