当前位置:网站首页>1791. Find the central node of the star diagram / 1790 Can two strings be equal by performing string exchange only once

1791. Find the central node of the star diagram / 1790 Can two strings be equal by performing string exchange only once

2022-07-06 00:53:00 PI Qiliang

1791. Find the central node of the star graph 【 Simple questions 】

Ideas :

  1. Because each point does not repeat , and edges It represents the line connected by two endpoints , Then the central node of these lines will inevitably repeat in these segments , Only the central node will appear repeatedly , So as long as there is an endpoint in the center, at least 2 Time , Then this point must be the central node .
  2. Define a hash set Used to store the endpoints of these segments , As long as there is endpoint repetition , Then return to this node directly , Otherwise, add this endpoint into set Traverse the next line segment .

Code :

class Solution {
    
    public int findCenter(int[][] edges) {
    
        Set<Integer> set = new HashSet<>();
        for (int[] edge : edges) {
    
            if (!set.add(edge[0])){
    
                return edge[0];
            }
            if (!set.add(edge[1])){
    
                return edge[1];
            }
        }
        return 0;
    }
}

when :

At present, there is no official solution .
 Insert picture description here


1790. Can performing only one string exchange make two strings equal 【 Simple questions 】

Ideas :

  1. Define a list list Used to count the character positions of two strings that are not equal .
  2. Because the two strings are the same length , So use ordinary for Loop can traverse two strings at the same time , If the characters of two strings are different in the same position , Add the current location to list in , After adding, if you find list The length of has been greater than 2 了 , Then it means that at this time, the two strings have at least 3 The positions of characters are different , It is impossible to make two strings equal by one string Exchange , So at this point, go straight back to false.
  3. After string traversal , If list The length of is still 0, Then it means that the two strings are exactly the same , Then I exchange characters in the same position of two strings at will , After that, the two strings must still be equal , Satisfy the question , So at this point, go straight back to true.
  4. If list The length of is 1, At this time, there is only one position character difference between the two strings , The characters in other positions are all the same and cannot be exchanged , At this time, it must be impossible to make the two strings equal through a string Exchange , So back false.
  5. Get rid of list The length of is 0, by 1 The situation of , that list The length of can only be 2 了 ( Greater than 2 The situation of 2 It has been eliminated when traversing two strings in one step , Can go to the end of traversal instructions list The length of must be less than or equal to 2 Of ), Now if s1 Of list【0】 The character of the position is the same as s2 Of list【1】 The characters of position are equal and s1 Of list【1】 Position character and s2 Of list【0】 Position characters are equal , Then it shows that the two unequal characters of these two strings can be exchanged to make the two strings equal , Satisfy the question , return true, Otherwise return to false.

Code :

class Solution {
    
    public boolean areAlmostEqual(String s1, String s2) {
    
        List<Integer> list = new ArrayList<>();
        int len = s1.length();
        for (int i = 0; i < len; i++) {
    
            if (s1.charAt(i) != s2.charAt(i)){
    
               list.add(i);
            }
            if (list.size()>2){
    
                return false;
            }
        }
        if (list.size() == 0){
    
            return true;
        }
        if (list.size() == 1){
    
            return false;
        }
        return (s1.charAt(list.get(0)) == s2.charAt(list.get(1))) && (s1.charAt(list.get(1)) == s2.charAt(list.get(0)));
    }
}

when :

At present, there is no official solution .
 Insert picture description here


notes :
I wrote today's daily question before , See
1189. “ balloon ” Maximum number of
The idea of rewriting today is not the same as last time , But the performance has not improved , I won't write it again in this article .

原网站

版权声明
本文为[PI Qiliang]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/02/202202140205092596.html