首页 > 编程语言 >41-50题矩阵和字符串 在Java中,将大写字符转换为小写字符的方法主要有以下几种:

41-50题矩阵和字符串 在Java中,将大写字符转换为小写字符的方法主要有以下几种:

时间:2024-07-23 22:28:23浏览次数:17  
标签:字符 Java nums int 单元格 50 大写 return

20240723

一、数组最后几个和字符串的两个

448. 找到所有数组中消失的数字(和645. 错误的集合差不多)

给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出现在 nums 中的数字,并以数组的形式返回结果。

class Solution {
    public List<Integer> findDisappearedNumbers(int[] nums) {
            int n = nums.length;
        int[] count = new int[n + 1]; // 1 到 n 的范围,所以数组长度为 n + 1
        
        // 记录出现的数字
        for (int x : nums) {
            count[x] = 1;
        }
        
        List<Integer> result = new ArrayList<>();
        
        // 查找缺失的数字
        for (int i = 1; i <= n; i++) {
            if (count[i] == 0) {
                result.add(i);
            }
        }
        
        return result;
    }
}

283. 移动零

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

请注意 ,必须在不复制数组的情况下原地对数组进行操作。

class Solution {
    public void moveZeroes(int[] nums) {
       if(nums==null){
			return;
		}
		//两个指针i和j
		int j = 0;
		for(int i=0;i<nums.length;i++) {
			//当前元素!=0,就把其交换到左边,等于0的交换到右边
			if(nums[i]!=0) {
				int tmp = nums[i];
				nums[i] = nums[j];
				nums[j++] = tmp;
			}
		}
    }
}

118. 杨辉三角

给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。
在「杨辉三角」中,每个数是它左上方和右上方的数的和。

示例 1:

输入: numRows = 5
输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]

class Solution {
    public List<List<Integer>> generate(int numRows) {
     List<List<Integer>> ret = new ArrayList<List<Integer>>();
     for(int i=0;i<numRows;++i){
        List<Integer> row =new ArrayList<Integer>();
        for(int j=0;j<=i;++j){
            if(j==0||j==i){
                row.add(1);
            }else{
                 row.add(ret.get(i - 1).get(j - 1) + ret.get(i - 1).get(j));
            }
        }
          ret.add(row);
     }
  return ret;
    }
}

119. 杨辉三角 II

给定一个非负索引 rowIndex,返回「杨辉三角」的第 rowIndex 行。

在「杨辉三角」中,每个数是它左上方和右上方的数的和。

class Solution {
    public List<Integer> getRow(int rowIndex) {
        List<Integer> row = new ArrayList<Integer>();
        row.add(1);
        for (int i = 1; i <= rowIndex; ++i) {
            row.add((int) ((long) row.get(i - 1) * (rowIndex - i + 1) / i));
        }
        return row;
    }
}

661. 图片平滑器(没看懂)

图像平滑器 是大小为 3 x 3 的过滤器,用于对图像的每个单元格平滑处理,平滑处理后单元格的值为该单元格的平均灰度。

每个单元格的 平均灰度 定义为:该单元格自身及其周围的 8 个单元格的平均值,结果需向下取整。(即,需要计算蓝色平滑器中 9 个单元格的平均值)。

如果一个单元格周围存在单元格缺失的情况,则计算平均灰度时不考虑缺失的单元格(即,需要计算红色平滑器中 4 个单元格的平均值)

class Solution {
    public int[][] imageSmoother(int[][] img) {
        int m = img.length, n = img[0].length;
        int[][] ret = new int[m][n];
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                int num = 0, sum = 0;
                for (int x = i - 1; x <= i + 1; x++) {
                    for (int y = j - 1; y <= j + 1; y++) {
                        if (x >= 0 && x < m && y >= 0 && y < n) {
                            num++;
                            sum += img[x][y];
                        }
                    }
                }
                ret[i][j] = sum / num;
            }
        }
        return ret;
    }
}

598. 区间加法 II

给你一个 m x n 的矩阵 M 和一个操作数组 op 。矩阵初始化时所有的单元格都为 0 。ops[i] = [ai, bi] 意味着当所有的 0 <= x < ai 和 0 <= y < bi 时, M[x][y] 应该加 1。

在 执行完所有操作后 ,计算并返回 矩阵中最大整数的个数 。

class Solution {
    public int maxCount(int m, int n, int[][] ops) {
    int mina = m, minb = n;
        for (int[] op : ops) {
            mina = Math.min(mina, op[0]);
            minb = Math.min(minb, op[1]);
        }
        return mina * minb;

    }
}

566. 重塑矩阵

在 MATLAB 中,有一个非常有用的函数 reshape ,它可以将一个 m x n 矩阵重塑为另一个大小不同(r x c)的新矩阵,但保留其原始数据。

给你一个由二维数组 mat 表示的 m x n 矩阵,以及两个正整数 r 和 c ,分别表示想要的重构的矩阵的行数和列数。

重构后的矩阵需要将原始矩阵的所有元素以相同的 行遍历顺序 填充。

如果具有给定参数的 reshape 操作是可行且合理的,则输出新的重塑矩阵;否则,输出原始矩阵。

class Solution {
    public int[][] matrixReshape(int[][] nums, int r, int c) {
        int m = nums.length;
        int n = nums[0].length;
        if (m * n != r * c) {
            return nums;
        }

        int[][] ans = new int[r][c];
        for (int x = 0; x < m * n; ++x) {
            ans[x / c][x % c] = nums[x / n][x % n];
        }
        return ans;
    }
}

303. 区域和检索 - 数组不可变

在这里插入图片描述

class NumArray {
    int[] sums;

    public NumArray(int[] nums) {
        int n = nums.length;
        sums = new int[n + 1];
        for (int i = 0; i < n; i++) {
            sums[i + 1] = sums[i] + nums[i];
        }
    }
    
    public int sumRange(int i, int j) {
        return sums[j + 1] - sums[i];
    }
}

520. 检测大写字母

我们定义,在以下情况时,单词的大写用法是正确的:

全部字母都是大写,比如 “USA” 。
单词中所有字母都不是大写,比如 “leetcode” 。
如果单词不只含有一个字母,只有首字母大写, 比如 “Google” 。
给你一个字符串 word 。如果大写用法正确,返回 true ;否则,返回 false 。
我们定义,在以下情况时,单词的大写用法是正确的:
全部字母都是大写,比如 “USA” 。
单词中所有字母都不是大写,比如 “leetcode” 。
如果单词不只含有一个字母,只有首字母大写, 比如 “Google” 。
给你一个字符串 word 。如果大写用法正确,返回 true ;否则,返回 false 。

class Solution {
    public boolean detectCapitalUse(String word) {
        // 若第 1 个字母为小写,则需额外判断第 2 个字母是否为小写
        if (word.length() >= 2 && Character.isLowerCase(word.charAt(0)) && Character.isUpperCase(word.charAt(1))) {
            return false;
        }
        
        // 无论第 1 个字母是否大写,其他字母必须与第 2 个字母的大小写相同
        for (int i = 2; i < word.length(); ++i) {
            if (Character.isLowerCase(word.charAt(i)) ^ Character.isLowerCase(word.charAt(1))) {
                return false;
            }
        }
        return true;
    }
}


125. 验证回文串

如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。

字母和数字都属于字母数字字符。

给你一个字符串 s,如果它是 回文串 ,返回 true ;否则,返回 false 。
示例 1:

输入: s = “A man, a plan, a canal: Panama”
输出:true
解释:“amanaplanacanalpanama” 是回文串

class Solution {
    public boolean isPalindrome(String s) {
        StringBuffer sgood = new StringBuffer();
        int length = s.length();
        for (int i = 0; i < length; i++) {
            char ch = s.charAt(i);
            if (Character.isLetterOrDigit(ch)) {
                sgood.append(Character.toLowerCase(ch));
            }
        }
        StringBuffer sgood_rev = new StringBuffer(sgood).reverse();
        return sgood.toString().equals(sgood_rev.toString());
    }
}

二、在Java中,将大写字符转换为小写字符的方法主要有以下几种:

在Java中,将大写字符转换为小写字符的方法主要有以下几种:

使用Character.toLowerCase()方法:这是Java标准库提供的方法,可以将任何大写字符转换为小写字符。

   `  char lowerCaseChar = Character.toLowerCase('A'); // 返回 'a'`

使用String.toLowerCase()方法:如果你有一个字符串,而不是单个的字符,你可以使用这个方法将字符串中的所有大写字符转换为小写字符。

  `String lowerCaseString = "HELLO WORLD".toLowerCase(); // 返回 "hello world"`

使用ASCII值进行转换:每个字符都有一个对应的ASCII值,大写字母和小写字母的ASCII值之间的差是32。所以,你可以通过添加32来将大写字符转换为小写字符。但是,这种方法只适用于英文字母。

`  char ch = 'A';
   ch = (char) (ch + 32); // 返回 'a'`

标签:字符,Java,nums,int,单元格,50,大写,return
From: https://blog.csdn.net/f552126506/article/details/140629753

相关文章

  • JavaSE异常、今日面试题,解决git合并失败的终极篇!!!若以框架报错Invalid bound statement
    20240723一、JavaSE异常二、今日面试题三、解决git无法合并推送问题(终极篇!!!)1.直接把你写的复制出来,然后输入git命令1.1.解决办法一:保留本地的更改,中止合并->重新合并->重新拉取1.2解决办法二:舍弃本地代码,远端版本覆盖本地版本(慎重)2.然后复制回来,然后再合并推......
  • 《Java初阶数据结构》----3.<线性表---LinkedList与链表>
    目录前言一、链表的简介1.1链表的概念1.2链表的八种结构 重点掌握两种1.3单链表的常见方法三、单链表的模拟实现四、LinkedList的模拟实现(双链表)4.1 什么是LinkedList4.2LinkedList的使用五、ArrayList和LinkedList的区别 前言   大家好,我目前在学习......
  • 黑马pink JavaScript学习笔记_Web APIs Day2
    事件监听(绑定)什么是事件?事件是系统内发生的动作或者发生的事情。比如:用户点击页面上的一个按钮。什么是事件监听?就是让程序检测是否有事件产生,一旦有事件触发,就立即调用一个函数做出响应,也称为注册事件比如:鼠标经过的时候,弹出一个alert“鼠标经过了~”语法元素对象.addEven......
  • 简答理解【字符指针】,存放字符串首地址???
    2024-07-23笔记-5作者(Author):仟濹(网名)字符指针①定义指针的时候也赋值字符串为什么给一个指针赋值字符串的时候也可以打印出来整个字符串???//eg:char*p="abcdefg";printf("%s",p);//abcdefgputs(p);//同理printf("%s",p+1);//bcdefgputs(p+1);/......
  • 大规模Java应用程序的性能调优策略
    大规模Java应用程序的性能调优策略大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!今天我们将深入探讨大规模Java应用程序的性能调优策略。随着应用程序的规模增大,性能瓶颈可能会显现出来,因此对性能的优化是保证应用系统高效运行的关键。一、JVM参数调优......
  • Java并发编程的高级技术与最佳实践
    Java并发编程的高级技术与最佳实践大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!今天我们来深入探讨Java并发编程的高级技术与最佳实践。并发编程是Java开发中的一项重要技能,它能够充分利用多核处理器的优势,提高应用程序的性能和响应能力。本文将从高级......
  • 使用Docker和Kubernetes管理Java微服务
    使用Docker和Kubernetes管理Java微服务大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!今天我们将探讨如何使用Docker和Kubernetes来管理Java微服务。Docker和Kubernetes是现代微服务架构中不可或缺的工具,它们能够极大地简化应用程序的部署和管理,提高开发......
  • 分布式系统中的Java应用:挑战与解决方案
    分布式系统中的Java应用:挑战与解决方案大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!今天我们将探讨在分布式系统中使用Java的挑战与解决方案。分布式系统在处理大规模数据和高并发访问方面具有显著优势,但也面临诸多复杂性和挑战。本文将深入分析这些挑......
  • 探索Java虚拟机优化技术:从基础到高级
    探索Java虚拟机优化技术:从基础到高级大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!今天我们将深入探讨Java虚拟机(JVM)的优化技术,从基础到高级,为Java程序的高效运行提供全面指导。一、JVM概述Java虚拟机是Java程序的运行环境,负责加载字节码、执行代码、......
  • 深入理解Java内存模型及其在多线程编程中的应用
    深入理解Java内存模型及其在多线程编程中的应用大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!今天我们来深入探讨Java内存模型(JavaMemoryModel,JMM)及其在多线程编程中的应用。一、Java内存模型概述Java内存模型(JMM)是Java虚拟机规范的一部分,定义了变......