面试问题总结

本文介绍了几种实用的编程技巧,包括查找字符串中首次出现的唯一字符的方法、如何合并两个有序数组形成新的有序数组,以及如何反转字符串。这些技巧对于初学者和日常开发者都非常有用。

问题1、在一个字符串中,查找第一个只出现一次的字符

import java.util.ArrayList;
public class Paixu {

	public static void main(String[] args) {
		checkone("fdfdsfffffffefekjfese");
		checktwo("fdfdsfffffffefekjfese");
	}
	
/*	1、转换为有顺序的取数组
 *  2、第一个字符,逐步和数组中的后面的字符相比较,并计数,
 *  3、如果循环完一轮,计数还是为1就是第一个个出现的	*/			
	public static void checkone(String s){
			char[] c=s.toCharArray();
			for(int i=0;i<c.length;i++){
				int flag=0;
				for(int j=0;j<c.length;j++){
					if(c[i]==c[j]){
						flag++;
					}
				}
				if(flag==1){
					System.out.println("第一种方法:字符串中第一个出现一次的字符为"+c[i]);
					return;
				}
			}
		}

/*
 * 1、新建一个List,利用list的有序
 * 2、从数组的第一个字符开始向list中放,如果list中存在,则删除list中元素,如果没有则放到list中,
 * 3、由于list有序的,然后取出list中的第一个,就是需要的字符	*/	
	public static void checktwo(String s){
		char[] c=s.toCharArray();
		ArrayList l=new ArrayList();
		for(int i=0;i<c.length;i++){
			String v = String.valueOf(c[i]);
		
				if(l.contains(v)){
					l.remove(v);
				}else{
					l.add(v);
				}
		}
		if(l.size()==0){
			System.out.println("不存在");
		}else{
			System.out.println("第二种方法,字符串中第一个出现一次的字符为"+l.get(0));
		}			
	}
}


问题:2、两个有序数组,合并为一个有序数组;(归并排序)

public class GuiBingPaiXu {
	public static void main(String[] args){
		int[] a={1,3,4,6,7,8,9};
		int[] b={2,5,8,10,12};
		int l = a.length+b.length;
		int[] c=new int[l];
		int m=0;
		int n=0;
		int i=0;
		while(m<(a.length)&n<(b.length)){
			/*设置游标m,n,然后分别从第一位开始比较,
			比出小的放到提前的空数组的第一位,依次向下排列,只要小的就往数组里放;*/
			if(a[m]>b[n]){
				c[i]=b[n];
				i++;
				n++;
				/*如果b数组已经排完序了,那么就直接把a还没有排序的直接放到后面*/
				if(n==(b.length)){
					while(i<l){
						c[i]=a[m];
						i++;
						m++;
					}
				}
			}else{
				c[i]=a[m];
				i++;
				m++;
				/*如果数组a已经已经比完了,那么把b数组还没有比较的直接放在后面*/
				if(m==(a.length)){
					while(i<l){
						c[i]=b[n];
						i++;
						n++;
					}
				}
			}
		}
		/*打印排序后的数组*/
		for(int z:c){
			System.out.print(z+",");
		}
	}
}

问题3、把一个字符翻转过来显示(先转换为char数组,然后把数组倒置过来)

public class Daozhi {
	public static void main(String[] args){
		String s="hello  java";
		char[] c=s.toCharArray();
		char[] cc=new char[c.length];
		int j=0;
		int i=c.length-1;
		while(i>=0){
			cc[j]=c[i];
			j++;
			i--;		
		}
		for(char r:cc){
			System.out.print(r);
		}
	}
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值