斐波那契数列、兔子递归问题、字符串切割、反转、字母大小写、去掉空格、上楼梯问题、替换部分字符串、找出某个字索引值

1.求第n项的斐波那契数列值

public class Fibonaci {
    public static void main(String[] args) {
        System.out.println(getFibonaci(10));
    }

    public static int getFibonaci(int n){
        if(n==1||n==2){
            return 1;
        }
        return getFibonaci(n-1)+getFibonaci(n-2);
    }
}

2.小明的妈妈看到小明今天高考结束,买了一对刚刚出生的小兔子,小兔子需要3个月长大成兔, 之后每月生产一对小兔子,假如不考虑小兔子的死亡情况,求第n月共有多少对兔子?

import java.util.Scanner;

public class Rabbit {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        System.out.println(getRabbitCount(n));
    }
    public static int getRabbitCount(int n) {
        if (n <= 3) {
            return 1;
        }
        return getRabbitCount(n - 1) + getRabbitCount(n - 3);
    }
}

3.根据完整的路径从路径中分离文件路径、文件名及扩展名传递一个路径 c://a//b//c.avi,返回该文件的后缀名

import java.io.File;
import java.util.List;

public class Splitpath {

    public static void main(String[] args) {
        String fName = " G:\\Java_Source\\navigation_tigra_menu\\demo1\\img\\lev1_arrow.gif ";
        System.out.println(splitpath_1(fName));
        System.out.println(splitpath_2(fName));
        System.out.println(splitpath_3(fName));

    }

    //      方法一:
    public static String splitpath_1(String fName) {
        File tempFile = new File(fName.trim());
        String fileName = tempFile.getName();
        return ("fileName = " + fileName);
    }
//      方法二:
    public static String splitpath_2(String fName) {

        fName = fName.trim();
//      String fileName = fName.substring(fName.lastIndexOf("/") + 1);
//      或者
        String fileName = fName.substring(fName.lastIndexOf("\\") + 1);
        return ("fileName = " + fileName);
    }

//      方法三:
    public static String splitpath_3(String fName){

        fName = fName.trim();
        String temp[] = fName.split("\\\\"); /**split里面必须是正则表达式,"\\"的作用是对字符串转义*/
        String fileName = temp[temp.length-1];
        return ("fileName = " + fileName);
    }
}

4.输入一个字符串,判断该字符串是否是回文字符串(面试题)

public class Palindrome {
    public static void main(String[] args) {
        System.out.println(isPlalindrome_1("12321"));
        System.out.println(isPlalindrome_1("1231"));
        System.out.println(isPlalindrome_1("123321"));

        String str = "12321";
        String str2 = "1231";
        String str3 = "123321";
        System.out.println(isPlalindrome_2(str, 0, str.length() - 1));
        System.out.println(isPlalindrome_2(str2, 0, str2.length() - 1));
        System.out.println(isPlalindrome_2(str3, 0, str3.length() - 1));


        System.out.println(isPlalindrome_3(str));
        System.out.println(isPlalindrome_3(str2));
        System.out.println(isPlalindrome_3(str3));

    }

//     借助内置函数反转实现回文字符串判断
//    StringBuilder()
//    构造一个没有字符的字符串生成器,并构造了16个字符的初始容量。
//    StringBuilder(CharSequence seq)
//    构建一个包含指定的 CharSequence相同字符的字符串生成器。
//    StringBuilder(int capacity)
//    构造一个字符串生成器没有字符和一个初始容量的 capacity参数指定。
//    StringBuilder(String str)
//    构造一个初始化为指定字符串的内容的字符串生成器。

    //第一种
    private static boolean isPlalindrome_1(String str) {
        StringBuilder sb = new StringBuilder(str);
        sb.reverse();
        return sb.toString().equals(str);
    }

    //第二种
    private static boolean isPlalindrome_2(String str, int low, int high) {
        if (high == 0 || high == 1) {
            return true;
        } else {
            char c1 = str.charAt(low), c2 = str.charAt(high);
            if (c1 == c2) { // 字符对比相等
                return isPlalindrome_2(str, low + 1, high - 1);
            } else { // 字符对比不相等
                return false;
            }
        }
    }

    //第三种
    private static boolean isPlalindrome_3(String str) {
        char[] chars = str.toCharArray();
        int maxSize = chars.length / 2; // 循环比较次数
        for (int i = 0; i < maxSize; i++) {
            if (chars[i] != chars[chars.length - 1 - i]) {
                // 最前面的和最后的依次对比,如果有一个不相同,则返回 false
                return false;
            }
        }
        return true;
    }
}

5.去掉字符串中的所有空格

public class ReplaceSpace {
    public static void main(String[] args) {
    String s =" this is beibei ";
        System.out.println(s);
        System.out.println(replacespace(s));
    }

    public static String replacespace (String s){
        String s2 =s.replaceAll(" ","");
        return s2;
    }
}

6.将字母全部转换为大写或小写

public class Exchange {
    public static void main(String[] args) {
        String str ="DADAXsdasadf";
        System.out.println(exChange(str));
    }

    public static String exChange(String str) {

        //变大写
        StringBuffer sb1 = new StringBuffer();
        if (str != null) {
            for (int i = 0; i < str.length(); i++) {
                char c = str.charAt(i);
                if (Character.isUpperCase(c)) {
                    sb1.append(c);
                } else if (Character.isLowerCase(c)) {
                    sb1.append(Character.toUpperCase(c));
                }
            }
        }

        //变小写
        StringBuffer sb2 = new StringBuffer();
        if (str != null) {
            for (int i = 0; i < str.length(); i++) {
                char c = str.charAt(i);
                if (Character.isUpperCase(c)) {
                    sb2.append(Character.toLowerCase(c));
                } else if (Character.isLowerCase(c)) {
                    sb2.append(c);
                }
            }
        }
        return sb1.toString()+"\n"+sb2.toString();
    }
}

7.接收用户输入的一句英文,将其中的单词以反序输出,“hello c sharp”→“sharp c hello”。

import java.util.ArrayList;
import java.util.List;

public class Wordreverse {
    public static void main(String[] args) {
        String str = "this is beibei";
        System.out.println(wordreverse(str));
    }

    public static String wordreverse(String str){
        List list =new ArrayList();
        String []s = str.split(" ");
        for (int i=s.length-1 ;i>=0;i--){
            list.add(s[i]);
        }
        return list.toString();
    }
}

8.从请求地址中提取出用户名和域名 http://www.163.com/?userName=admin&pwd=123456

public class SplitUrl {
    public static void main(String[] args) {
        String str ="http://www.163.com/?userName=admin&pwd=123456";
        System.out.println(spliturl(str));
    }

    public static String spliturl(String str){

        String s[]=str.split("://|/");
        String s1[] =str.split("=|&");

        return "url="+s[1]+"\n"+"用户名="+s1[1];
    }
}

9.让用户输入一句话,找出所有"呵"的位置。

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Match {
    public static void main(String[] args) {

        String str="的呵呵呵呵呵的呵";
        String str2="呵";
        System.out.println(match(str,str2));

    }

    public static String match(String str,String str2){
        List list = new ArrayList();
        for (int i=0 ;i<str.length();i++)
        {
            if (str.charAt(i)==str2.charAt(0)){
                list.add(i);
            }
        }
        return list.toString();
    }
}

10.让用户输入一句话,判断这句话中有没有邪恶,如果有邪恶就替换成这种形式然后输出,如:“老牛很邪恶”,输出后变成”老牛很**”;

public class Insteadof {
    public static void main(String[] args) {
        String str ="老牛很邪恶";
        String str2="邪恶";
        System.out.println(insteadof(str,str2));
    }

    public static String insteadof(String str,String str2) {
        //contains 是否包含该元素
        boolean bool = str.contains(str2);
        if (bool==true) {
            str =str.replace(str2,"**");
        }
        return str;
    }
}

11.上楼梯问题:某个人上楼梯,每次只能上一个台阶或者两个台阶,那么当这个人到达第n个台阶时,共有多少种走法?

import java.util.Scanner;

public class Upstairs {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你所要的台阶层数:");
        int n = sc.nextInt();
        f(n);
        System.out.println("共有"+f(n)+"种方法!");
    }

    public static int f(int n){
        if (n<=0){
            return 0;
        }else if(n==1){
            return 1;
        }else if (n==2){
            return 2;
        }else{
            return f(n-1)+f(n-2);
        }
    }
}

12.猜字游戏,计算机随机一个0~100的整数,每次用户输出字猜, 提示如下: 猜大了,重新猜 猜小了,重新猜 猜对了

import java.util.Random;
import java.util.Scanner;

public class Guessnumber {
    public static void main(String[] args) {
        Random random = new Random();
        int rand = random.nextInt(101);
        Scanner input = new Scanner(System.in);
        while (true) {
            System.out.println("请输入你所猜的数字:");
            int i = input.nextInt();
            if (i == rand) {
                System.out.println("猜对了");
                return;
            } else if (i < rand) {
                System.out.println("猜小了,继续猜");
            } else {
                System.out.println("猜大了,继续猜");
            }
        }
    }
}

13.猜拳游戏,石头剪刀布。 随机数生成石头剪刀布(0:石头 1:剪刀 2:布)

import java.util.Random;
import java.util.Scanner;
public class Guessmora {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Random random = new Random();
        System.out.println("输入任意数字开始游戏:");
        int num = sc.nextInt();
        if(num>=0) {
            while (true) {
                System.out.println("0:代表石头");
                System.out.println("1:代表剪刀");
                System.out.println("2:代表布");
                System.out.println("3:退出游戏");
                int r = random.nextInt(2);
                System.out.print("请输入对应的数字:");
                int user = sc.nextInt();
                if (user == 0 && r == 0) {
                    System.out.println("双方出的一样,重新猜拳!");
                } else if (user == 1 && r == 1) {
                    System.out.println("双方出的一样,重新猜拳!");
                } else if (user == 2 && r == 2) {
                    System.out.println("双方出的一样,重新猜拳!");
                } else if (user == 0 && r == 1) {
                    System.out.println("用户方胜利");
                } else if (user == 0 && r == 2) {
                    System.out.println("系统方胜利");
                } else if (user == 1 && r == 0) {
                    System.out.println("系统方胜利");
                } else if (user == 1 && r == 2) {
                    System.out.println("用户方胜利");
                } else if (user == 2 && r == 0) {
                    System.out.println("用户方胜利");
                } else if (user == 2 && r == 1) {
                    System.out.println("系统方胜利");
                }else if(user==3){
                    break;
                }else {
                    System.out.println("输入有误请重新输入:");
                }
            }
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值