添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接


这个题是力扣上面的——640. 求解方程;题不难,写上来是因为很麻烦,调了很久,总要留做一个纪念~~~
题目描述:
求解一个给定的方程,将x以字符串"x=#value"的形式返回。该方程仅包含’+’,’ - '操作,变量 x 和其对应系数。
如果方程没有解,请返回“No solution”。
如果方程有无限解,则返回“Infinite solutions”。
如果方程中只有一个解,要保证返回值 x 是一个整数。
示例 1:
输入: “x+5-3+x=6+x-2”
输出: “x=2”
示例 2:
输入: “x=x”
输出: “Infinite solutions”
示例 3:
输入: “2x=x”
输出: “x=0”
示例 4:
输入: “2x+3x-6x=x+2”
输出: “x=-1”
示例 5:
输入: “x=x+2”
输出: “No solution”

解题思路:
(1)进行替换String e = equation.replace("-x","-1x").replace("-",“±”);
(2)用等号进行分割,左右
(3)左右分别用String [] ls=left.split("\+");
(4)分别找到左右的x系数和常数的系数,最后进行处理即可。
注:记得转义字符

代码实现:

class Solution {
    public static String solveEquation(String equation) {
		String e = equation.replace("-x","-1x").replace("-","+-");//.replace("x","1x");
		String [] ss=e.split("=");
		String left=ss[0];
		String right=ss[1];
		long xiShuz=0;
		long sumz=0;
		//System.out.println(left);
		//System.out.println(right);
		String [] ls=left.split("\\+");
		//System.out.println(Arrays.toString(ls));
		for(int i=0;i<ls.length;i++) {
			if(ls[i].length()==0) {
				continue;
			if(ls[i].contains("x")) {
				if(ls[i].equals("x")) {
					xiShuz+=1;
				}else {
					xiShuz+=Integer.parseInt(ls[i].replace("x", ""));
			}else {
				sumz+=Integer.parseInt(ls[i]);
		//System.out.println(xiShuz+","+sumz);
		long xiShuy=0;
		long sumy=0;
		String [] rs=right.split("\\+");
		//System.out.println(Arrays.toString(rs));
		for(int i=0;i<rs.length;i++) {
			if(rs[i].length()==0) {
				continue;
			if(rs[i].contains("x")) {
				if(rs[i].equals("x")) {
					xiShuy+=1;
				}else {
					xiShuy+=Integer.parseInt(rs[i].replace("x", ""));
			}else {
				sumy+=Integer.parseInt(rs[i]);
		//System.out.println(xiShuy+","+sumy);
		long xiShu=xiShuz-xiShuy;
		long sum=sumy-sumz;
		if(xiShu==0 && sum==0) {
			return "Infinite solutions";
		}else if(xiShu==0 && sum!=0) {
			return "No solution";
		}else if(xiShu!=0 && sum==0) {
			return "x=0";
		}else {
			int sign=1;
			if(xiShu<0) {
				sign*=-1;
				xiShu=-xiShu;
			if(sum<0) {
				sign*=-1;
				sum=-sum;
			long ys=getGys(xiShu,sum);
			xiShu/=ys;
			sum/=ys;
			if(xiShu==1) {
				return "x"+"="+(sign*sum);
			return xiShu+"x"+"="+(sign*sum);
    //这是万一两个数可以进行约分
	private static long getGys(long xiShu, long sum) {
		long max = Math.max(xiShu, sum);
		long min = Math.min(xiShu, sum);
		long ys=max%min;
		while(ys!=0) {
			max=min;
			min=ys;
			ys=max%min;
		return min;
                            
bs4 python 所有的文本 python 文本类型

文件一、编码格式二、文件的读写(一)创建:open()(二)文件类型(三)常用方法三、with语句四、目录操作(一)os(二)os.path(三)walk 一、编码格式1.Python的解释器使用的是Unicode(内存)。 2…py文件在磁盘上使用的是UTF-8(外存)。二、文件的读写(一)创建:open()f = open(filename[, mode, encoding]) # f:对

a标签设置 jquery jquery给a标签绑定事件
<a id="alink" href="abc.aspx" style="visibility: hidden;">下一步</a> $("#alink").click(); // 触发了a标签的点击事件,但是没有触发页面跳转 document.getElementById("alink").click(); //既触发了

java 实现udp打洞 java udp编程

大家都知道java中的socket网络编程,而其采用的协议分别有tcp和udp协议两种.通常的理解tcp协议类似于打电话,udp类似于发短信.前者是线程安全的,但是效率比较低.后者则刚好相反.今天就做个demo来了解一下udp网络编程.首先是客户端:package javasocket.demo; import java.net.DatagramPacket; import java.net.D