JZ1二维数组中的查找
题目描述
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
示例1
输入:7,[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]
返回值:true
实现代码:
public class Solution {
public boolean Find(int target, int [][] array) {
if(array == null){
return false;
}
int rows = array.length;
int cols = array[0].length;
if(rows<=0 || cols<= 0){
return false;
}
int row = 0;
int col = cols -1;
while(row<rows && col>=0){
if(array[row][col]== target){
return true;
}else if(array[row][col]>target){
col--;
}else{
row++;
}
}
return false;
}
}
JZ1字符串中空格替换
题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
package cn.itcast.day01.demo08;
public class Solution {
public static void main(String[] args) {
StringBuffer strb=new StringBuffer(" Hello world ");
String str1=replaceSpace(strb);
System.out.println(str1);
}
public static String replaceSpace(StringBuffer str){
if (str==null)
return null;
StringBuffer str1=new StringBuffer();
for (int i = 0; i < str.length(); i++) {
char a=str.charAt(i);
if(a ==' '){
str1.append("%20");
}
else {
str1.append(a);
}
}
String str2=new String(str1);
return str2;
}
}
StringBuffer对象的初始化
- StringBuffer s = new StringBuffer();
- StringBuffer s = new StringBuffer(“abc”);
StringBuffer和String之间的转换
String s = “abc”;
StringBuffer sb1 = new StringBuffer(“123”);
StringBuffer sb2 = new StringBuffer(s); //String转换为StringBuffer
String s1 = sb1.toString(); //StringBuffer转换为String
StringBuffer的常用方法
StringBuffer类中的方法主要偏重于对于字符串的变化,例如追加、插入和删除等,这个也是StringBuffer和String类的主要区别。
【1】append方法
作用:追加内容到当前StringBuffer对象的末尾
public StringBuffer append(boolean b)
StringBuffer sb = new StringBuffer(“abc”);
sb.append(“true”);//sb的值将变成”abctrue”。
用处:例如应用于数据库SQL语句的连接
StringBuffer sb = new StringBuffer();
String user = “test”;
String pwd = “123”;
sb.append(“select * from userInfo where username=“)
.append(user)
.append(“ and pwd=”)
.append(pwd);
“select * from userInfo where username=test and pwd=123”
【2】deleteCharAt方法
作用:是删除指定位置的字符,然后将剩余的内容形成新的字符串。
public StringBuffer delete(int start,int end);
public StringBuffer deleteCharAt(int index);
StringBuffer sb = new StringBuffer(“Test”);
sb. deleteCharAt(1);/*"Tst"*/
StringBuffer sb = new StringBuffer(“TestString”);
sb. delete (1,4);//左闭右开 ”TString”
【3】 insert方法
作用:是在StringBuffer对象中插入内容,然后形成新的字符串。
public StringBuffer insert(int offset, boolean b)
StringBuffer sb = new StringBuffer(“TestString”);
sb.insert(4,false);//TestfalseString
【4】reverse方法
作用:将StringBuffer对象中的内容反转,然后形成新的字符串。
public StringBuffer reverse()
StringBuffer sb = new StringBuffer(“abc”);
sb.reverse();//”cba”
【5】setCharAt方法
作用:修改对象中索引值为index位置的字符为新的字符ch。
public void setCharAt(int index, char ch)
StringBuffer sb = new StringBuffer(“abc”);
sb.setCharAt(1,’D’);//”aDc”
【6】 trimToSize方法
public void trimToSize()
作用:将StringBuffer对象的中存储空间缩小到和字符串长度一样的长度,减少空间的浪费
JZ3 从尾到头打印链表
题目描述:
输入一个链表,按链表从尾到头的顺序返回一个ArrayList。
非递归:
/**
* public class ListNode {
* int val;
* ListNode next = null;
*
* ListNode(int val) {
* this.val = val;
* }
* }
*
*/
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
ArrayList<Integer> list=new ArrayList<>();
ListNode p=listNode;
while(p!=null){
list.add(0,p.val);
p=p.next;
}
return list;
}
}
递归:
/**
* public class ListNode {
* int val;
* ListNode next = null;
*
* ListNode(int val) {
* this.val = val;
* }
* }
*
*/
import java.util.ArrayList;
public class Solution {
ArrayList<Integer> arrayList = new ArrayList<>();
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
if(listNode!=null){
this.printListFromTailToHead(listNode.next);
arrayList.add(listNode.val);
}
return arrayList;
}
}