基础算法

/**
* 如果一个01串任意两个相邻位置的字符都是不一样的,我们就叫这个01串
* 为交错O1串。例如:”1”,”10101”,”0101010”都是交错01串。
* 小易现在有一个01串s,小易想找出一个最长的连续子串,并且这个子串是一
* 个交错01串。小易需要你帮帮忙求出最长的这样的子串的长度是多少。
* 输入描述:
* 输入包括字符串s,s 的长度length(I s length < 50),字符串中只包含’0‘和’1’
* 输出描述:
* 输出一个整数,表示最长的满足要求的子串长度。
* 输入例子1:
* 111101111
* 输出例子1:
* 3
*/

import java.util.Scanner;

public class CrossString {
    public static int  crossString(String s){
        int length = 1;
        int max = 0;
        if(s.length()>50 || s.isEmpty() || s.length() == 1 ){
            System.out.println("格式错误,不存在交错01串");
            return 0;
        }
        for (int i = 1; i <s.length() ; i++) {
            if(s.charAt(i) == s.charAt(i-1)){
                length = 1;
            }else{
                length++;
            }
            max = Math.max(length,max);
        }
        return max;
    }
    public  static void  main(String[] args){
        Scanner scan = new Scanner(System.in);
        System.out.println("输入字符串:");
        String s = scan.nextLine();
        System.out.println("原字符串为:"+s);
        int length = crossString(s);
        System.out.println("交错01字符串长度:"+length);
    }
}

/**
* 在给定n个数中找出两个数的和为固定值k。
* 输入n,再输入n个数,最后输入k
* 例输入:
* 9
* 2 3 5 4 6 12 15 13 4
* 16
* 输出:3 13
*/

import org.junit.Test;//单元测试包

import java.util.Scanner;

public class Sum {
    /**
     *计算
     * @param ints
     * @param k
     */
    public void sum(int[] ints,int k){
        if(ints==null || ints.length==0){
            System.out.println("请输入正确的数组");
        }
        int num1=0;
        int num2=0;
        for (int i = 0; i < ints.length; i++) {
            for (int j = i+1; j < ints.length; j++) {
                if (ints[i]+ints[j]==k){
                    num1 = ints[i];
                    num2 = ints[j];
                    System.out.println("两个数分别是:"+num1+" "+num2);
                }
            }
        }
        if(num1==0 && num2==0) {
            System.out.println("没有这两个值");
        }
    }
    //测试
    @Test
    public void test(){
        int[] ints = {1,2,3,4,5,6,7,8};
        int k = 13;
        sum(ints,k);
    }
}

/**
* 验证括号是否能正常闭合。包含 () [] {}。
* 例如: {[()]}{}()[] 这个是能正常闭合的。(})]{ 这个是不能正常闭合的。
* 输入:字符串s。
* 输出:YES或者NO。
*/

import org.junit.Test;

import java.util.ArrayDeque;

public class CloseBrackets {
    public String isCloseBrackets(String s){
        ArrayDeque<Character> bracket = new ArrayDeque<>();
        if(s.length()==0 || s == null){
            System.out.println("字符串为空");
            return "no";
        }
        for (int i = 0; i < s.length(); i++) {
            char b = s.charAt(i);
            if(b=='(' || b=='{' || b=='['){
                bracket.push(b);
                continue;
            }
            if((b==')' || b=='}' || b==']') && bracket.isEmpty()){
                return "no";
            }
            if((b==')' && bracket.peek()=='(') || (b=='}' && bracket.peek()=='{') || (b==']' && bracket.peek()=='[')){
                bracket.pop();
                continue;
            }
        }
        if(bracket.isEmpty()){
            return "yes";
        }
        return "no";
    }
    //测试
    @Test
    public void test(){
        String s = "({[]})())";
        String bool = isCloseBrackets(s);
        System.out.println(bool);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值