首页 > 编程语言 >找质数(图算法)、交错字符串(字符串、动态规划)、有效数字(字符串)

找质数(图算法)、交错字符串(字符串、动态规划)、有效数字(字符串)

时间:2023-09-05 19:31:34浏览次数:46  
标签:return 有效数字 s2 质数 length 字符串 false true chars

找质数(图算法)

找出大于200的最小的质数 解答:

import java.util.*;
import java.lang.*;
import java.io.*;
class Ideone {
    public static void main(String[] args) throws java.lang.Exception {
        int n = 201;
        while (true) {
            boolean b = true;
            for (int i = 2; i < n / 2; i++) {
                if (n % i == 0)
                    b = false;
            }
            if (b)
                break;
            n++;
        }
        System.out.println(n);
    }
}

交错字符串(字符串、动态规划)

给定三个字符串 s1、s2、s3,请你帮忙验证 s3 是否是由 s1 和 s2_ _**交错 **组成的。 两个字符串 s 和 t 交错 的定义与过程如下,其中每个字符串都会被分割成若干 非空 子字符串:

  • s = s1 + s2 + ... + sn
  • t = t1 + t2 + ... + tm
  • |n - m| <= 1
  • 交错 是 s1 + t1 + s2 + t2 + s3 + t3 + ... 或者 t1 + s1 + t2 + s2 + t3 + s3 + ...

**提示:**a + b 意味着字符串 a 和 b 连接。

示例 1:

输入:s1 = "aabcc", s2 = "dbbca", s3 = "aadbbcbcac"
输出:true

示例 2:

输入:s1 = "aabcc", s2 = "dbbca", s3 = "aadbbbaccc"
输出:false

示例 3:

输入:s1 = "", s2 = "", s3 = ""
输出:true

提示:

  • 0 <= s1.length, s2.length <= 100
  • 0 <= s3.length <= 200
  • s1、s2、和 s3 都由小写英文字母组成

解答:

class Solution {
    public boolean isInterleave(String s1, String s2, String s3) {
        if ((s1.length() + s2.length()) != s3.length())
            return false;
        boolean[][] dp = new boolean[s2.length() + 1][s1.length() + 1];
        dp[0][0] = true;
        for (int i = 1; i <= s1.length(); i++) {
            dp[0][i] = dp[0][i - 1] && s1.charAt(i - 1) == s3.charAt(i - 1) ? true : false;
        }
        for (int i = 1; i <= s2.length(); i++) {
            dp[i][0] = dp[i - 1][0] && s2.charAt(i - 1) == s3.charAt(i - 1) ? true : false;
        }
        for (int i = 1; i < dp.length; i++) {
            for (int j = 1; j < dp[0].length; j++) {
                dp[i][j] = (dp[i][j - 1] && s1.charAt(j - 1) == s3.charAt(i + j - 1))
                        || (dp[i - 1][j] && s2.charAt(i - 1) == s3.charAt(i + j - 1));
            }
        }
        return dp[s2.length()][s1.length()];
    }
}

有效数字(字符串)

有效数字(按顺序)可以分成以下几个部分:

  1. 一个 小数 或者 整数
  2. (可选)一个 'e' 或 'E' ,后面跟着一个 整数

小数(按顺序)可以分成以下几个部分:

  1. (可选)一个符号字符('+' 或 '-')
  2. 下述格式之一:
    1. 至少一位数字,后面跟着一个点 '.'
    2. 至少一位数字,后面跟着一个点 '.' ,后面再跟着至少一位数字
    3. 一个点 '.' ,后面跟着至少一位数字

整数(按顺序)可以分成以下几个部分:

  1. (可选)一个符号字符('+' 或 '-')
  2. 至少一位数字

部分有效数字列举如下:

  • ["2", "0089", "-0.1", "+3.14", "4.", "-.9", "2e10", "-90E3", "3e+7", "+6e-1", "53.5e93", "-123.456e789"]

部分无效数字列举如下:

  • ["abc", "1a", "1e", "e3", "99e2.5", "--6", "-+3", "95a54e53"]

给你一个字符串 s ,如果 s 是一个 有效数字 ,请返回 true 。

示例 1:

输入:s = "0"
输出:true

示例 2:

输入:s = "e"
输出:false

示例 3:

输入:s = "."
输出:false

示例 4:

输入:s = ".1"
输出:true

提示:

  • 1 <= s.length <= 20
  • s 仅含英文字母(大写和小写),数字(0-9),加号 '+' ,减号 '-' ,或者点 '.' 。

以下程序实现了这一功能,请你填补空白处内容:

class Solution {
	char[] chars;
	boolean point = false;
	boolean exponent = false;
	public boolean isNumber(String s) {
		s = s.trim();
		int length = s.length();
		if (length == 0) {
			return false;
		}
		chars = s.toCharArray();
		String[] ss = s.split("e");
		if (ss.length == 0) {
			return false;
		}
		if (ss[0].length() == 0)
			return false;
		if (ss[0].length() < length)
			exponent = true;
		if (ss[0].length() == length - 1) {
			return false;
		}
		String[] pre = ss[0].split("\\.");
		if (pre.length == 0) {
			return false;
		}
		if (pre[0].length() < ss[0].length())
			point = true;
		boolean result = pre(0, pre[0].length());
		result = result && middle(pre[0].length() + 1, ss[0].length());
		if (exponent) {
			result = result && is(ss[0].length() + 1, length);
		}
		return result;
	}
	____________________________;
	public boolean middle(int i, int length) {
		if (i >= length && point) {
			if (chars[i - 2] >= '0' && chars[i - 2] <= '9') {
				return true;
			}
			return false;
		}
		for (; i < length; i++) {
			if (chars[i] < '0' || chars[i] > '9') {
				return false;
			}
		}
		return true;
	}
	public boolean is(int i, int length) {
		if (i == 1) {
			return false;
		}
		if (chars[i] == '+' || chars[i] == '-') {
			i++;
		}
		if (i == length) {
			return false;
		}
		for (; i < length; i++) {
			if (chars[i] < '0' || chars[i] > '9') {
				return false;
			}
		}
		return true;
	}
}

解答:

public boolean pre(int i, int length) {
	if (i >= length) {
		return true;
	}
	if (chars[i] == '+' || chars[i] == '-') {
		i++;
	}
	if (i == length && !point) {
		return false;
	}
	for (; i < length; i++) {
		if (chars[i] < '0' || chars[i] > '9') {
			return false;
		}
	}
	return true;
}

本文内容到此结束了, 如有收获欢迎点赞

标签:return,有效数字,s2,质数,length,字符串,false,true,chars
From: https://blog.51cto.com/zhanjq/7378841

相关文章

  • sqlserver中怎么将一列数据拼接成一个字符串
     SELECTb.name+','FROM dbo.TechnologyColorajoin[dbo].[CustomColor]b ona.customcolorid=b.id WHEREProductId=345882800324677FORxmlPATH('')SELECT需要合并的字段+','FROM表名FORXMLPATH(''......
  • 模板字符串
    点击查看代码functionrender(template,data){constreg=/\{\{(\w+)\}\}/;//模板字符串正则if(reg.test(template)){//判断模板⾥是否有模板字符串constname=reg.exec(template)[1];//查找当前模板⾥第⼀个模板字符串的字段template=template.replace(reg,......
  • 字符串的复制
    classString{private:char*m_Buffer;unsignedintm_Size;public:String(constchar*string){//首先constchar*等同于stringm_Size=int(strlen(string));//因为64位的strlen是unisignedlongm_Buffer=newchar[m_Si......
  • 字符串处理
    1.数组拼接坑比用例322,5,6,7,,,9,5,71,7,4,3,,4importjava.util.Scanner;importjava.util.*;//注意类名必须为Main,不要有任何packagexxx信息publicclassMain{publicstaticvoidmain(String[]args){Scannerin=newScanner(System.in)......
  • LeetCode -- 394. 字符串解码(栈处理字符串问题)
     我们用栈同时维护当前字符串和倍数以及要加倍的字符串当遇到"["时,我们保存当前字符串,即将当前字符cres串入栈;当遇到"]"时,res=cres+倍数*应加倍的字符串classSolution:defdecodeString(self,s:str)->str:stack,res,multi=[],"",0......
  • 【群答疑】jmeter关联获取上一个请求返回的字符串,分割后保存到数组,把数组元素依次作为
    一个非常不错的问题,来检验下自己jmeter基本功 可能有同学没看懂题,这里再解释一下,上面问题需求是:jmeter关联获取上一个请求返回的字符串,分割后保存到数组,把数组元素依次作为下一个请求的入参 建议先自己思考,如果2小时没做出来,可以参考文末评论区的实现思路(仅登录后可见) ......
  • java 将长字符串截取为指定位数短字符代码
    //原始长字符串strContextStringstrContext="长字符串................................";ArrayList<String>arrayList=newArrayList(5);inttotalNo=strContext.length();//小字符串长度pageSizeintpageSize=20;if(totalNo>pageSize){//取模等于0,说......
  • JavaScript用indexOf()在字符串数组中查找子串时需要注意的一个地方
    一、遇到问题在 继续更新完善:C++结构体代码转MASM32代码 中,由于结构体成员中可能为数组类型的情况,因此我们在提取结构体成员信息的过程中,需要检测结构体成员名称字符串中是否包括[],如果包括那么我们要截取'['前面的内容作为成员名称。在用字符串的indexOf()方法检测和定位'['......
  • 通过class字节码了解StringBuilder拼接字符串效率高的原因
    挺久没具体去看了,随手记一下吧。Stringstr="";for(inti=0;i<10;i++){str+=i;}这样的拼法,实际上从分析class的字节码来看,是在循环里面newStringBuffer对象,相当的耗。通过这样的分析,给新人解释,是最有效的了。还能提升一些了解java底层知识的兴趣。——《Java编程思......
  • 1768. 交替合并字符串
    给你两个字符串 word1 和 word2 。请你从 word1 开始,通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长,就将多出来的字母追加到合并后字符串的末尾。返回 合并后的字符串 。 示例1:输入:word1="abc",word2="pqr"输出:"apbqcr"解释:字符串合并情况如......